चूंकि 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)।