ऑब्जेक्ट ग्राफ़ का शीर्ष spec में कहीं और अपेक्षाओं के साथ अधिक स्थिरता बनाए रखने के लिए बनाया गया है।
आवश्यक रूप से, ऐसा कोई बिंदु आता है जहां सामान्य ऑब्जेक्ट लिंक का उपयोग नहीं किया जा सकता क्योंकि आप "ऑब्जेक्ट से बाहर निकलते हैं"।
ऐसा JavaScript की बुनियादी समझ Object
की [[Prototype]]
Object
समारोह-वस्तु बनाने के लिए इस्तेमाल किया समारोह के प्रोटोटाइप संपत्ति होने की उम्मीद करने के लिए हमें ले जाता है।
हम उम्मीद करते हैं Function
रों Function
समारोह-वस्तु का उपयोग कर बनाया जा करने के लिए है, तो ...
Object.__proto__ === Function.prototype
क्योंकि हम वस्तु ग्राफ के शीर्ष पर हैं और अपेक्षित व्यवहार हम कॉन्फ़िगर की निरंतरता बनाए रखना चाहते हैं [[Prototype]]
Function
Function.prototype
होने के लिए।
Function.__proto__ === Function.prototype
इस प्रकार Function instanceof Function === true
सुनिश्चित करना।
हम दिखा सकते हैं कि Function.prototype
एक विशेष समारोह-वस्तु है क्योंकि:
Function.prototype.prototype === undefined
... और हर उपयोगकर्ता परिभाषित समारोह (वसा तीर के अलावा अन्य) अपने प्रोटोटाइप संपत्ति पर एक वस्तु है।
क्योंकि सब से ऊपर की
:
Object.__proto__ === Function.__proto__
यह अजीब लग सकता है सकते हैं, लेकिन जैसा कि पहले बताया गया है, वस्तु ग्राफ़ के शीर्ष पर हम उम्मीदवार वस्तुओं के एक सीमित सेट को इंगित करने के लिए है।
टीसी -39 अब [[Prototype]]
[[Prototype]]
Object
के [[Prototype]]
की पहचान करने की आवश्यकता है। उपरोक्त के अनुसार हम जानते हैं कि [[Prototype]]
Object
Function.prototype
है।
कुछ अर्थों में हम अब ऑब्जेक्ट ग्राफ़ में Function.prototype
से ऊपर हैं, इसलिए एक विशेष Object
इंस्टेंस ("प्रोटोटाइप ऑब्जेक्ट") इस मान के लिए चुना गया था।
इसका मतलब है कि प्रत्येक प्रोटोटाइप श्रृंखला के शीर्ष को आसानी से Object.prototype
से जोड़ा जा सकता है।
यह निश्चित रूप से इच्छाशील आवश्यकता को पूरा करता है कि सब कुछ "एक वस्तु है"।
Object.__proto__.__proto__ === Object.prototype
इस बिंदु हम वस्तु ग्राफ पूरा करने की आवश्यकता पर है, इसलिए हम null
होने की Object.prototype
की [[Prototype]]
निर्धारित किया है।
Object.__proto__.__proto__.__proto__ === null
'ऑब्जेक्ट .__ proto__ === फ़ंक्शन.प्रोटोटाइप' ... ऑब्जेक्ट एक फ़ंक्शन है। 'टाइप ऑब्जेक्ट === "फ़ंक्शन" ' –
... और' __proto__' ईसीएमएस्क्रिप्ट 6 में जोड़ा गया था। –
... और कारण' Function.prototype' एक खाली फ़ंक्शन प्रतीत होता है यह है कि कई प्रोटोटाइप अंतर्निर्मित रचनाकार वास्तव में उनके द्वारा बनाई गई वस्तु का एक उदाहरण हैं। उदाहरण के लिए, 'Array.isArray (Array.prototype); // true' (या शायद काफी उदाहरण नहीं है, लेकिन उनके पास कुछ रिश्तेदार के साथ कुछ रिश्ते हैं।) –