जब आप जावास्क्रिप्ट में एक समारोह फोन, 'यह' संदर्भ के आधार पर अलग अलग बातें करने के लिए संदर्भित करेंगे: समारोह के लिए बाध्य कर दिया गया है
हैं, 'इस' जो कुछ भी पर सेट हो जाएगा यह उदाहरण के लिए बाध्य था fn.bind(x)()
आप fn.call(x)
या fn.apply(x)
, इस एक्स पर सेट हो जाएगा का उपयोग कर समारोह लागू हैं।
समारोह तीर अंकन का उपयोग परिभाषित किया गया था, तो this
जो कुछ भी जब समारोह परिभाषित किया गया था this
होने के लिए परिभाषित किया गया था कर दिया जाएगा।
आप thing.fn()
साथ फ़ंक्शन को कॉल करते हैं, तो this
से पहले क्या है '।', इस मामले 'बात' में है।
यदि आप new
के साथ बुलाए गए कंस्ट्रक्टर में हैं तो this
निर्माण के तहत नई वस्तु को संदर्भित करता है।
तुम सिर्फ एक नंगे समारोह बुला रहे हैं, तो यह है कि किसी भी वस्तु, कि बाध्य नहीं है पर नहीं है, कि एक तीर समारोह नहीं है और आप सरल तरीके से यह कॉल कर रहे हैं, का उपयोग किए बिना कॉल या लागू करें, तो this
वैश्विक ऑब्जेक्ट को संदर्भित करेगा यदि आप सख्त मोड में नहीं हैं, और यदि आप सख्त मोड में हैं तो अपरिभाषित। उद्धरण द्वारा 'इस मजबूती' के रूप में को संदर्भित किया गया है।
है यही कारण है कि, आप एक ब्राउज़र कंसोल खोलें और टाइप
Function('console.log(this)')()
अगर सांत्वना होगा उत्पादन विंडो जो ब्राउज़र में वैश्विक वस्तु है। लेकिन यदि आप कंसोल खोलें और टाइप
Function('"use strict";console.log(this)')()
सांत्वना undefined
प्रवेश करेंगे।
मैं फ़ंक्शन कन्स्ट्रक्टर का उपयोग कर रहा हूं, क्योंकि यह स्थिति में दिखाई देने वाली स्थिति के बावजूद गैर-सख्त मोड के उपयोग को मजबूर करने का एक तरीका है - इसलिए इन उदाहरणों को अभी भी काम करना चाहिए, भले ही आप उन्हें फ़ाइल के अंदर से चलाएं या सख्त मोड में कंसोल ऑपरेटिंग।
this
बलात्कार, वैश्विक वस्तु होने का सबसे सुविधाजनक तरीका हो सकता है अर्थात दोनों ब्राउज़र और नोड में
const global = Function('return this')()
काम करता है, यहां तक कि कठोर मोड में।
लेकिन अधिकांश समय, आप तेजी से असफल होना चाहते हैं, और जिन कार्यों को आप विशेष रूप से अपने वैश्विक ऑब्जेक्ट पर संचालित करते हैं, वे वास्तव में काम कर सकते हैं, जो गड़बड़ कर सकते हैं। this
से कुछ लिखने या पढ़ने के प्रयास करने के बाद अपवाद फेंकते समय इसे ऑब्जेक्ट को पढ़ने और लिखने से लगभग हमेशा बेहतर होता है।
आप जावास्क्रिप्ट के 'यह' के बारे में पहले से क्या जानते हैं? (क्या एक स्पष्टीकरण को सामान्य अर्थ में 'इस' का उपयोग करने के मूलभूत सिद्धांतों के साथ शुरू करना होगा, या ...?) – nnnnnn
आपके द्वारा उद्धृत पाठ यह समझाता है कि "इस मजबूती" का अर्थ क्या है (इस संदर्भ में)। आप वास्तव में क्या समझ में नहीं आता? विवरण बहुत सटीक नहीं है: * "सख्त मोड में, शून्य या अपरिभाषित के इस मान को संदर्भित करने से त्रुटि उत्पन्न होती है।" * यह बिल्कुल सही नहीं है। 'इस' को एक्सेस करने से कोई त्रुटि नहीं आ जाएगी। 'this.something' होगा। –
यह [लिंक] (http://stackoverflow.com/a/11496488/452708) कुछ अंतर्दृष्टि फेंक सकता है। – Abhijeet