2015-03-30 6 views
7

मैं समझने की कोशिश कर रहा हूं कि this मान जावास्क्रिप्ट में सेट है, और ईसीएमएस्क्रिप्ट भाषा विशिष्टता बहुत उपयोगी है। मैं section 8.7reference specification type पढ़ रहा था और पाया कि ECMAScript में संदर्भ 3 घटक, base value, referenced name, strict reference flag से section 11.2.3 को समझने के लिए बनाया गया है।ईसीएमएस्क्रिप्ट (ईसीएमए -262 5.1) में `संदर्भ` का 'मूल मूल्य' क्या है?

मुझे लगता है कि referenced name और strict reference flag उनके नाम से क्या हैं, लेकिन मुझे नहीं पता कि base value क्या है। दस्तावेज़ में कहा गया है कि base value या तो undefined, String, Boolean, Number और Object है, लेकिन यह नहीं कहता कि यह कैसे सेट किया गया है और यह क्या है। मुझे लगता है कि यह संदर्भ वस्तु के समान कुछ है। क्या कोई समझा सकता है?

+0

जैसे @shashank बताते हैं, 'यह' संदर्भित होने वाली किसी भी वस्तु से 'टाइपोफ़ 'प्राप्त करता है। मेरा मानना ​​है कि जेएस में सभी चर 'प्रोटोटाइप ऑब्जेक्ट' – RenaissanceProgrammer

+0

@Shashank हैं: 'this' का मान परिवर्तित नहीं हुआ है, यह एक विशेष वस्तु या प्रकार नहीं है। 'यह' विशेष है क्योंकि मान सीधे निष्पादन संदर्भ से संदर्भित किया जाता है, न कि संबंधित पर्यावरण रिकॉर्ड। हालांकि मूल्य किसी भी अन्य मूल्य की तरह है। सवाल वास्तव में 'इस' के साथ कुछ भी नहीं करना है। –

+1

http://perfectionkills.com/know-thy-reference/ – kangax

उत्तर

3

हां, आधार मूल्य वह संदर्भ है जिसमें संदर्भित नाम रहता है।

किसी ऑब्जेक्ट प्रॉपर्टी के लिए, यह ऑब्जेक्ट होगा (सेटर/गेटर ऑपरेशंस के लिए §8.12 Object internal methods देखें)। एक चर के लिए, यह परिवर्तनीय वातावरण होगा (§10.2.1 Environment records)। एक अनौपचारिक संदर्भ के लिए (चीजें जो संदर्भ त्रुटियों को फेंकती हैं except when supplied to typeof), यह undefined होगी।

यह कहना नहीं है कि यह कैसे सेट किया गया है

Reference मूल्यों केवल बहुत कम संचालन से निर्माण कर रहे हैं:,

+0

आपके उत्तर के लिए धन्यवाद। मैं इसे समझने के लिए थोड़े से शुरू कर रहा हूँ। मैंने यह भी पढ़ा [धारा 10.4.3] (http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.3), यह कहता है कि यह या तो 'शून्य' या 'अपरिभाषित' है, 'यह' मान वैश्विक वस्तु पर सेट है। तो एक और सवाल, क्या कोई मामला है कि 'मूल मूल्य' 'शून्य 'है? – ringord

+1

ध्यान दें कि 'इस बाइंडिंग' के संदर्भ मानों के साथ कुछ लेना देना नहीं है। 'ThisArg' कॉलर द्वारा आपूर्ति की गई एक मान है - वास्तव में विधि आमंत्रण के मामले में कभी भी' शून्य 'नहीं है, लेकिन आप ['.call (null)'] का उपयोग कर सकते हैं (http://www.ecma-international.org /ecma-262/5.1/#sec-15.3.4.4) साथ ही साथ। नहीं, संदर्भ को 'शून्य' के साथ * आधार मान * के रूप में कभी नहीं बनाया गया है। 'null.x' और' undefined.x' [तुरंत फेंक दें] (http://es5.github.io/#x9.10), और पहचानकर्ता संदर्भों में स्पष्ट रूप से पारित 'अनिर्धारित' है। – Bergi

+0

आधार मूल्य 'बूलियन',' संख्या', या 'स्ट्रिंग' कब होता है? – Taurus

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