2010-12-10 21 views
6

मेरे पास जेएसओएन से कुछ वस्तुओं को deserialized है, जिसमें मैं विभिन्न गेटर और सेटर कार्यों को प्रदान करने के लिए एक नया प्रोटोटाइप असाइन करना चाहता हूं। (के रूप में this question में उल्लेख किया है) यह करने के लिए स्पष्ट तरीका__proto__ संपत्ति को सौंपने का उचित तरीका

myJsonObj.__proto__ = { function1: /* ... */, function2: /* ... */ }; 

स्थापित करने के लिए हालांकि, MDC helpfully points out के रूप में, __proto__ संपत्ति अमानक और पदावनत है। क्या कई मानक रैपर ऑब्जेक्ट्स बनाने के बिना, समान प्रभाव प्राप्त करने के लिए कोई मानक-अनुरूप तरीका ("मानकों" की कुछ परिभाषाओं के लिए) है?

+0

प्रलेखन आप से जुड़ा हुआ पता चलता है कि आप "उपयोग Object.getPrototypeOf() के बजाय" ([getPrototypeOf()] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/GetPrototypeOf))। तो इस तरह कुछ: 'var proto = myJsonObj.getPrototypeOf(); proto.function1 =/* जो भी * /; proto.function2 =/* जो भी * /; ' – Lee

+0

ली, अगर मुझे गलत नहीं है, तो 'ऑब्जेक्ट .getPrototypeOf (myJsonObj)' को कॉल करना मुझे 'ऑब्जेक्ट.प्रोटोटाइप' देगा (क्योंकि 'myJsonObj' के पास कोई अन्य कन्स्ट्रक्टर नहीं था)। इसका मतलब है कि आपके सुझाव का पालन करके, मैं 'myJsonObj' में कक्षा को इंजेक्ट करने के बजाय' ऑब्जेक्ट '(बहुत खराब) संशोधित कर रहा हूं। – kpozin

उत्तर

4

इसकी रचना के बाद किसी ऑब्जेक्ट के प्रोटोटाइप को बदलने का कोई मानक तरीका नहीं है। जेएसओएन से पार्स करते समय आप जो भी प्रोटोटाइप चाहते हैं, उसके साथ वस्तुओं को बनाने के लिए एक मानक अनुपालन तरीका है।

http://www.json.org/js.html से

:

वैकल्पिक फिर से जीवित करनेवाला पैरामीटर समारोह है कि अंतिम परिणाम के हर स्तर पर हर कुंजी और मान के लिए बुलाया जाएगा है। प्रत्येक मान को फ़ंक्शन के परिणामस्वरूप प्रतिस्थापित किया जाएगा। इसका उपयोग जेनेरिक ऑब्जेक्ट्स को छद्मक्लास के उदाहरणों में सुधारने के लिए किया जा सकता है, या तारीख स्ट्रिंग्स को दिनांक ऑब्जेक्ट्स में बदलने के लिए किया जा सकता है।

संबंधित मुद्दे