नोड एक JavaScript इंजन, नहीं एक ब्राउज़र है। विशेष कारण है कि आप नोड में undefined
, और Lulu
एक ब्राउज़र में देखते हैं? Differences in the global namespace:
ब्राउज़र में, शीर्ष-स्तरीय दायरा वैश्विक दायरा है। इसका मतलब है कि यदि आप वैश्विक दायरे में हैं तो ब्राउज़र में var something
वैश्विक चर परिभाषित करेगा। नोड में यह अलग है। शीर्ष-स्तरीय दायरा वैश्विक दायरा नहीं है; एक नोड मॉड्यूल के अंदर var something
उस मॉड्यूल के लिए स्थानीय होगा।
ब्राउज़र में, this
window
वस्तु के लिए एक संदर्भ है - ब्राउज़र की ग्लोबल नेम स्पेस - सभी कार्य करता है जो एक वस्तु (जैसे नहींfoo.bar()
की तरह) के लिए स्वाधीन लागू कर रहे हैं के लिए। नोड में, this
वैश्विक नामस्थान का संदर्भ नहीं है।
एनबी।console.log(this.name)
एक नोड दुभाषिया में Lulu
, नहीं undefined
प्रिंट होगा। यही कारण है, क्योंकि केवल आरईपीएल में,
> this === global
true
आगे पढ़ने @How To Node: What is "this?"
ठीक है, एक संपादित @Šime Vidas' के बारे में टिप्पणी से प्रेरित के रूप में है this
ES5 strict mode में:
01,235,
- वैश्विक संदर्भ में (किसी भी फ़ंक्शन के बाहर),
this
वैश्विक वस्तु को संदर्भित करता है, चाहे सख्त मोड में हो या नहीं।
this
कीवर्ड एक समारोह के अंदर होता है, अपने मूल्य how the function is called पर निर्भर करता है।
- जब किसी फ़ंक्शन को ऑब्जेक्ट की विधि के रूप में बुलाया जाता है, तो इसकी
this
उस ऑब्जेक्ट पर सेट होती है जिस पर विधि को कॉल किया जाता है।
अधिक दिलचस्प पढ़ने one of his blog posts में Juriy Zaytsev (aka @kangax) के सौजन्य से।
स्रोत
2011-12-24 13:51:05
यह वास्तव में "अनिर्धारित", मेरे नोड संस्करण 'v0.4.10' – island205
है (1) हम ब्राउज़र में वैश्विक चर से बचने की कोशिश। (2) आप सख्त मोड कोड है, जो मामले में ऊपर कोड फेंकता है ... –