self
जावास्क्रिप्ट पर्यावरण और अंक [वैश्विक] ऑब्जेक्ट के लिए द्वारा परिभाषित किया गया है (लेकिन कल्पना का हिस्सा नहीं है, इसलिए वहाँ नहीं हो सकता है) है, जबकि window
डोम विनिर्देश का हिस्सा है। अधिकांश ब्राउज़रों में window
का उपयोग [वैश्विक] ऑब्जेक्ट के रूप में किया जाता है, लेकिन यह हमेशा ऐसा नहीं होता है।
self == window.self
अजीब नहीं है क्योंकि वे एक ही वस्तु हैं - जब self
देखा जा रहा है, यह वैश्विक वस्तु (window
) की संपत्ति के रूप में पाया जाता है। तो यह वास्तव में window.self == window.self
जैसा ही है।
जैसा कि कहीं और उल्लेख किया गया है, विश्वसनीय संदर्भ [global]
ऑब्जेक्ट के लिए, आपको वैश्विक निष्पादन संदर्भ में var global = this;
चलाकर इसे अपने सीएफ को परिभाषित करना चाहिए।
स्रोत
2010-05-09 12:01:39
आपको या तो संदर्भ देने की आवश्यकता क्यों है? 'विंडो' डीओएम का हिस्सा है, जबकि 'स्वयं' जावास्क्रिप्ट में वैश्विक वस्तु से संबंधित है, जो अधिकांश कार्यान्वयन में डोम की खिड़की के बराबर होता है। राइनो जैसे गैर-ब्राउज़र कार्यान्वयन में, 'स्वयं' मौजूद है, लेकिन 'विंडो' नहीं है क्योंकि कोई डोम नहीं है। –
@ सेन: जावास्क्रिप्ट (ईसीएमएस्क्रिप्ट) मानक में 'self' प्रकट नहीं होता है। कार्यान्वयन के नाम पर वैश्विक वस्तु को विश्वसनीय रूप से एक्सेस करने के लिए, आपको वैश्विक संदर्भ (किसी भी कार्य के बाहर) में ऐसा कुछ निष्पादित करके इसे स्वयं नाम देना होगा: 'var global = this; 'यह काम करता है क्योंकि जब नियंत्रण में प्रवेश होता है वैश्विक संदर्भ कोड, 'यह' वैश्विक वस्तु को इंगित करता है। 'self' 'window.self' संदर्भ IMHO के बाहर वैश्विक वस्तु के नाम के रूप में कोई समझ नहीं लेता है। –
@ टी.जे. बस उसी –