दिलचस्प पोस्ट
contenthitable div में भीतरी एचटीएमएल की जगह सीएसएस अंतिम-बाल चयनकर्ता: विशिष्ट वर्ग के अंतिम तत्व का चयन करें, माता-पिता के अंदर अंतिम बच्चा नहीं? क्या कोई सी ++ स्ट्रेट वैल्यू बनाने का एक तरीका है- सभी पीओडी सदस्य चर का इनिशियलाइज़ करना? सिंगलटन में डबल चेक लॉकिंग TableView से DetailView स्विफ्ट तक डेटा भेजें यूनिकोड वर्ण यूआरएल सांकेतिक शब्दों में बदलना सही तरीका क्या है? अजगर में एक स्ट्रिंग में एस्केप एजेक्शन प्रक्रिया करें PHP में लक्षण – कोई वास्तविक दुनिया उदाहरण / सर्वोत्तम अभ्यास? स्केलर्न से आयात करने में आयात की गई त्रुटि: नाम चेक_बिल्ड को आयात नहीं किया जा सकता डीजेँगो स्थिर स्थिर यूआरएल स्थिर रूट के बीच क्या अंतर है ।*? और। * नियमित अभिव्यक्तियाँ JSON को सीएसवी प्रारूप में कनवर्ट कैसे करें और किसी चर में स्टोर करें सुंदर git शाखा ग्राफ स्पष्ट आइकन के साथ IE10 पर पाठ इनपुट को साफ़ करते समय ईवेंट निकाल दिया गया एक दिनांक फ़ील्ड पर वर्ष, दिन या महीना से ActiveRecord खोजें

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

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

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

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

Solutions Collecting From Web of "यह फ़ंक्शन के अंदर है"

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 ऑब्जेक्ट के सदस्य चर के होते हैं