चूंकि ECMA- / Javascript बारे में है Objects
और Contexts
(जो, वस्तु के somekind भी कर रहे हैं), हर चर एक ऐसे कहा जाता है में संग्रहीत किया जाता Variable- एक समारोह के मामले में (या, एक्टिवेशन ऑब्जेक्ट के ।
तो यदि आप इस तरह चर बनाते हैं:
var a = 1,
b = 2,
c = 3;
में वैश्विक गुंजाइश (= सं समारोह संदर्भ), आप अप्रत्यक्ष रूप में उन चर बारे में वैश्विक वस्तु (=window
एक ब्राउज़र में)।
वे "डॉट" या "ब्रैकेट" नोटेशन का उपयोग करके पहुंच सकते हैं:
var name = window.a;
या
var name = window['a'];
यह केवल, इस विशेष उदाहरण में वैश्विक वस्तु के लिए काम करता है क्योंकि चर वस्तु का वैश्विक वस्तु है window
वस्तु ही। किसी फ़ंक्शन के संदर्भ में, आपके पास सक्रियण ऑब्जेक्ट तक सीधी पहुंच नहीं है । उदाहरण के लिए:
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
}
new foobar();
new
एक स्व-परिभाषित वस्तु (संदर्भ) का एक नया उदाहरण बनाता है। new
समारोह के दायरे के बिना भी global
(= खिड़की) होगा। यह उदाहरण सतर्क undefined
और 1
क्रमशः होगा। यदि हम इसके this.a = 1; this.b = 2
साथ प्रतिस्थापित करेंगे:
var a = 1,
b = 2;
दोनों अलर्ट आउटपुट अपरिभाषित होंगे। उस परिदृश्य में, चर a
और b
से सक्रियण ऑब्जेक्ट में संग्रहीत किया जाएगा foobar
, जिसे हम एक्सेस नहीं कर सकते हैं (निश्चित रूप से हम कॉल करके a
और सीधे उन तक पहुंच सकते हैं b
)।