मैं यह समझने की कोशिश कर रहा हूं कि आंतरिक फ़ंक्शन को बाहरी फ़ंक्शन की सार्वजनिक संपत्ति तक क्यों पहुंचा जा सकता है जब बाहरी फ़ंक्शन को सीधे कॉल किया जाता है, लेकिन जब इसे किसी को असाइन नहीं किया जाता है चर?फ़ंक्शन को कॉल करने और फ़ंक्शन का उदाहरण बनाने के बीच जावास्क्रिप्ट अंतर
उदाहरण:
function outer(x,y){
this.x = x;
this.y = y;
function inner(){
alert(this.x);
}
inner();
}
outer(1,2); //As expected, alerts 1
var func = outer(1,2) //Also alert 1
var func2 = new outer(1,2); //Alerts undefined
एक बात मैं करने की कोशिश की alert(this.x);
से this
कीवर्ड निकालने के लिए था और यह तीनों मामलों के लिए काम किया है। हालांकि, अगर मैं this
कीवर्ड हटा देता हूं, तो मैं पारित पैरामीटर तक पहुंच सकता हूं, न कि सार्वजनिक चर, जो निश्चित रूप से वांछित कार्रवाई नहीं है। क्या कोई इस व्यवहार को समझा सकता है?
Ony उपयोग 'this' समारोह शरीर के अंदर है, अगर आप चाहते हैं' new' के माध्यम से यह आह्वान करने के लिए, या एक विधि के रूप में, या के माध्यम से '.call में से एक()' मूल रूप से क्या लिखा है/'.apply()' /'.bind() 'विधियां। एक फ़ंक्शन जिसे 'funcName()' के माध्यम से नियमित रूप से बुलाया जाता है, उसे 'this' का उपयोग नहीं करना चाहिए। –
इसके अलावा, यदि जावास्क्रिप्ट प्रोग्राम सख्त मोड में चलता है, और 'funcName()' के माध्यम से एक फ़ंक्शन का आह्वान किया जाता है, तो 'यह' अपरिभाषित 'होगा। नतीजतन, संपत्ति का उपयोग (उदा। 'This.x') एक संदर्भ त्रुटि फेंकता है। –