दिलचस्प पोस्ट
एकाधिक एक्सेल फाइलों पर एक ही मैक्रो को चलाएं मैटप्ललिब में मैं अलग-अलग आंकड़ों को कैसे दिखा सकता हूं? एक लाख के लिए वैकल्पिक यदि बयान मैं स्थापित MSI सेटअप के उत्पाद GUID को कैसे प्राप्त करूं? वैकल्पिक पैरामीटर के डिफ़ॉल्ट मान के रूप में खाली सरणी उत्तीर्ण करना सेलेनियम वेबड्राइवर (सेलेनियम 2) में सी # का उपयोग करके ब्राउज़र विंडो को अधिकतम कैसे करें? हाइबरनेट 4 और जोडा-टाइम JPA / Hibernate में फ्लश () का सही उपयोग नए उपयोगकर्ता के निर्माण पर उपयोगकर्ता नाम और यादृच्छिक पासवर्ड के साथ ईमेल की स्वत: पीढ़ी अगर ऑब्जेक्ट सी # में एक संख्या है, तो जांचना किसी एक्सेस कोड के साथ एक फ़ोन नंबर डायलॉग करें सीएसएस के अंत में प्रश्न चिह्न में यूआरएल में क्या शामिल है? एक्सेन्ट और सभी वर्णों को कैसे हटाया जा सकता है <> a..z में sql-server? वेबकैम और वेबआरटीसी और सर्वर-आधारित पीअर कनेक्शन का उपयोग करने के लिए रिकॉर्ड कैसे करें Mockito – doReturn (और) के बीच का अंतर ()

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

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

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