दिलचस्प पोस्ट
लिनक्स में डेमॉन बनाना वस्तुओं की एक सूची को फेरबदल करना गणना असर w / Haversine फ़ंक्शन के लिए CLLocation श्रेणी Angularjs: त्रुटि: तर्क 'होम कंट्रोलर' एक समारोह नहीं है, अपरिभाषित हो गया प्रोटोटाइप ऑब्जेक्ट या कन्स्ट्रक्टर के माध्यम से तरीकों की स्थापना, अंतर? पायथन समय सेकंड: एच: एम: एस jQuery के कीप्रेस एरो कुंजियाँ MySQL के लिए स्केलिंग समाधान (प्रतिकृति, क्लस्टरिंग) दो स्ट्रिंग कैसे जोड़ें जैसे कि वे संख्याएं थीं? स्प्रिंग एमवीसी: रिसेप्शनबॉडी में छवि कैसे लौटाएगी? Z- इंडेक्स स्टैकिंग ऑर्डर को समझना नई एंड्रॉइड स्टूडियो में एपीके स्थान Javax.tools.JavaCompiler के साथ पूरी तरह से स्मृति में कोड संकलित करें नोडजेएस को एक वैश्विक मॉड्यूल / पैकेज की आवश्यकता है MySQL अनुक्रमित कैसे काम करते हैं?

यह फ़ंक्शन के अंदर है

मेरा सवाल यह है कि:

function Foo() { this.foo = "bar"; // <- What is "this" here? } 

मैं जो बता सकता हूं, यह इस बात पर निर्भर करता है कि Foo कैसे उपयोग किया जाता है, यानी कन्स्ट्रक्टर या फ़ंक्शन के रूप में। यह अलग परिस्थितियों में क्या हो सकता है?

वेब के समाधान से एकत्रित समाधान "यह फ़ंक्शन के अंदर है"

this कीवर्ड ऑब्जेक्ट को संदर्भित करता है कि फ़ंक्शन किसी ऑब्जेक्ट से संबंधित है, या window ऑब्जेक्ट है।

इसका प्रयोग OOP कोड में किया जाता है, फ़ंक्शन का वर्ग / ऑब्जेक्ट का संदर्भ देता है उदाहरण के लिए:

 function foo() { this.value = 'Hello, world'; this.bar = function() { alert(this.value); } } var inst = new foo(); inst.bar(); 

यह अलर्ट: Hello, world

आप apply() या call() फ़ंक्शंस का उपयोग करके उस ऑब्जेक्ट को संदर्भित कर सकते हैं (कई बार एक बहुत ही आसान सुविधा)

 var bar1 = new function() { this.value = '#1'; } var bar2 = new function() { this.value = '#2'; } function foo() { alert(this.value); } foo.call(bar1); // Output: #1 foo.apply(bar2, []); // Output: #2 

डगलस क्रॉकफोर्ड को जावास्क्रिप्ट प्रोग्रामिंग भाषा के एक सर्वेक्षण से उद्धृत करने के लिए इस मामले पर क्या कहना है, पढ़ें:

एक समारोह एक वस्तु है इसमें अन्य वस्तुएं जैसे सदस्य हो सकते हैं इससे फ़ंक्शन में स्वयं के डेटा तालिकाओं को शामिल करने की अनुमति मिलती है। यह एक वस्तु को कक्षा के रूप में कार्य करने की भी अनुमति देता है, जिसमें एक कन्स्ट्रक्टर और संबंधित विधियों का एक सेट शामिल होता है।

एक फ़ंक्शन ऑब्जेक्ट का सदस्य हो सकता है जब कोई फ़ंक्शन ऑब्जेक्ट का सदस्य होता है, इसे एक विधि कहा जाता है। एक विशेष चर है, जिसे इस वस्तु को सेट किया जाता है जब ऑब्जेक्ट की एक विधि कहा जाता है।

उदाहरण के लिए, foo.bar () अभिव्यक्ति में, यह चर फ़ंक्शन बार के लिए अतिरिक्त तर्क के रूप में वस्तु foo पर सेट है। फ़ंक्शन बार तब ब्याज की वस्तु का उपयोग करने के लिए इसका संदर्भ ले सकता है।

Do.re.mi.fa () की तरह एक गहरी अभिव्यक्ति में, यह चर ऑब्जेक्ट do.re.mi पर सेट है, ऑब्जेक्ट के लिए नहीं। साधारण फ़ंक्शन कॉल में, यह ग्लोबल ऑब्जेक्ट (उर्फ विंडो) पर सेट है, जो कि बहुत उपयोगी नहीं है। सही व्यवहार इस के वर्तमान मूल्य को संरक्षित किया जाना चाहिए था, विशेषकर जब आंतरिक फ़ंक्शन बुलाते समय

इसके अलावा 'यह' आपके फ़ंक्शन को लागू करने के आधार पर बदल सकता है, फंक्शन और कॉल फ़ंक्शन को लागू कर सकते हैं ।

मैं सुझाव करता हूं कि आप अपने मुक्त (मुक्त) प्रस्तुतियों में जावास्क्रिप्ट के सबसे बड़े दिमाग में से एक सीखने का समय व्यतीत करते हैं, जो यहां से जुड़ा हुआ है ।

जावास्क्रिप्ट में, सम्मेलन (और ये केवल एक सम्मेलन है) यह है कि कैपिटल कैरेक्टर के साथ शुरू होने वाला कोई भी कंसोल कन्स्ट्रक्टर के रूप में उपयोग किया जाता है। फिर, एक कॉल करेगा

var foo = new Foo() और this नव निर्मित ऑब्जेक्ट को संदर्भित करेगा जो कि foo द्वारा संदर्भित होने वाला है

बेशक, आप Foo() को अपनी तरफ से बुलाए जाने से कुछ भी नहीं रोकते हैं, उस स्थिति में this तब उस ऑब्जेक्ट को संदर्भित करेगा जिसमें फ़ंक्शन को बुलाया गया था। भ्रम से बचने के लिए, यह अनुशंसित नहीं है।

जावास्क्रिप्ट में सब कुछ वस्तु भी कार्य है। जब आप निम्न कोड में यह कहते हैं

 function Foo() { this.foo = "bar"; // <- What is "this" here? } 

Foo ऑब्जेक्ट के सदस्य चर के होते हैं