2012-06-12 17 views
10

ईसीएमएस्क्रिप्ट में Internal Property क्या परिभाषित किया गया है? कल्पना द्वाराईसीएमएस्क्रिप्ट में क्या आंतरिक संपत्ति परिभाषित की गई है?

इस विनिर्देशन विभिन्न आंतरिक गुण का उपयोग करता वस्तु values.These आंतरिक गुणों का अर्थ विज्ञान को परिभाषित करने के ECMAScript भाषा का हिस्सा नहीं हैं क्या मतलब है। इन्हें एक्सपोजिटरी उद्देश्यों के लिए पूरी तरह से द्वारा परिभाषित किया गया है।

क्या इसका मतलब यह है कि ईसीएमएस्क्रिप्ट द्वारा परिभाषित आंतरिक गुण प्रोग्रामिंग के लिए उपलब्ध नहीं हैं। उनका उपयोग जावास्क्रिप्ट इंजन के कार्यान्वयन में किया जाता है?

उत्तर

0

इन्हें उदाहरण में जावास्क्रिप्ट इंजन को कार्यान्वित करने के तरीके में उपयोग किया जाता है।

4

क्या इसका मतलब यह है कि ईसीएमएस्क्रिप्ट द्वारा परिभाषित आंतरिक गुण प्रोग्रामिंग के लिए उपलब्ध नहीं हैं। वे जावास्क्रिप्ट इंजन के कार्यान्वयन में उपयोग किया जाता है?

हां। वे केवल कार्यान्वयन उद्देश्यों के लिए हैं, और "असली नाम" की आवश्यकता नहीं है। आप इसके बारे में #8.6.2 Object Internal Properties and Methods में पढ़ सकते हैं।

1

अक्सर इस्तेमाल किया जाने वाला उदाहरण आंतरिक संपत्ति [[प्रोटोटाइप]] है, सभी वस्तुओं में एक है लेकिन आप इसे सीधे एक्सेस नहीं कर सकते हैं।

function foo(){ 
    this.first = "hi" 
    this.second = something 
} 
foo.prototype = { 
    constructor : foo, 
    anotherProp : "hello" 
} 

var obj = new foo(); 

console.log(obj.anotherProp); //hello 
//here the runtime will look in obj for anotherProp and 
//fail to find it so it will look in obj's internal property 
//[[prototype]] which is pointing to the object foo.prototype 

ताकि आप वस्तुओं है कि आंतरिक संपत्ति [[प्रोटोटाइप]] के लिए, लेकिन सीधे नहीं आंतरिक [[प्रोटोटाइप]] संपत्ति है कि क्रम का उपयोग करने के लिए ही, प्रोग्रामर नहीं के माध्यम से इशारा कर रही है पहुँच सकते हैं।

6

आंतरिक गुण कोड के व्यवहार को परिभाषित करते हैं क्योंकि यह निष्पादित होता है लेकिन कोड के माध्यम से सुलभ नहीं होता है। ईसीएमएस्क्रिप्ट जावास्क्रिप्ट में ऑब्जेक्ट्स के लिए कई आंतरिक गुणों को परिभाषित करता है। आंतरिक गुण डबल-स्क्वायर-ब्रैकेट नोटेशन द्वारा इंगित किए जाते हैं।

उदाहरण के लिए, जावास्क्रिप्ट फ़ंक्शन एक ऑब्जेक्ट है और इसमें [[कॉल]] संपत्ति है। [[कॉल]] संपत्ति काम करने के लिए अद्वितीय है।

एक और आंतरिक संपत्ति उदाहरण [[प्रोटोटाइप]] संपत्ति है। यह प्रॉपर्टी एक पॉइंटर है जो प्रोटोटाइप ऑब्जेक्ट पर वापस इशारा करती है जिसका उदाहरण उपयोग कर रहा है। चूंकि आंतरिक संपत्ति को कोड के माध्यम से एक्सेस नहीं किया जा सकता है, इसलिए ऑब्जेक्ट इंस्टेंटेशन प्रोटोटाइप तक नहीं पहुंच सकता है, जबकि इसकी गुण वस्तु के लिए उपलब्ध हैं। ऑब्जेक्ट पर Object.getPrototypeOf() विधि का उपयोग करके आप [[प्रोटोटाइप]] संपत्ति का मान प्राप्त कर सकते हैं।

var obj = new Object(); 
var prototype = Object.getPrototypeOf(obj); 
console.log(prototype == Object.prototype); 
संबंधित मुद्दे