मेरे पास एक प्रश्न है कि "यह" पॉइंटर को नेस्टेड फ़ंक्शन परिदृश्य में कैसे व्यवहार किया जाता है।
मान लें कि मैं निम्नलिखित नमूना कोड एक वेब पेज में सम्मिलित करता हूं। जब मुझे नेस्टेड फ़ंक्शन "doSomeEffects ()" कहते हैं, तो मुझे एक त्रुटि मिलती है। मैंने फायरबग में जांच की और यह इंगित करता है कि जब मैं उस नेस्टेड फ़ंक्शन में हूं, तो "यह" सूचक वास्तव में वैश्विक "विंडो" ऑब्जेक्ट की ओर इशारा कर रहा है - जिसकी मुझे उम्मीद नहीं थी। मुझे कुछ ठीक से समझ में नहीं आ रहा होगा क्योंकि मैंने सोचा था कि चूंकि मैंने ऑब्जेक्ट के एक फ़ंक्शन के भीतर नेस्टेड फ़ंक्शन की घोषणा की है, तो फ़ंक्शन के संबंध में इसका "स्थानीय" दायरा होना चाहिए (यानी "यह" पॉइंटर ऑब्जेक्ट की तरह ही संदर्भित होगा) यह मेरे पहले "अगर" कथन में कैसे है)।
किसी भी संकेत (कोई उद्देश्य नहीं) की सराहना की जाएगी।
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
this
उस ऑब्जेक्ट को संदर्भित करता है जिस पर फ़ंक्शन को लागू किया जाता है।
var self = this;
और फिर self
बंद के माध्यम से आंतरिक कार्य को देखें ।
doSomeEffects
विशेष रूप से किसी भी obj से जुड़ा नहीं है, इसलिए this
इसे सभी तत्वों की मां, खिड़की माना जाता है।