javascript - When we store a method in a variable and then call it, Why does the context object change to the global window object? -


नीचे उदाहरण jqfundamentals से लिया गया है,

  var person = {firstName: 'Boaz' , अंतिमनाम: 'प्रेषक', नमस्कार: कार्य () {लॉग ('हाय,' + this.firstName); }}; Var sayIt = person.greet; // एक चर में विधि को स्टोर करें यह (); // logs 'हाय, अपरिभाषित' - उह-ओह   

स्पष्टीकरण के रूप में,

जब हम एक चर में ग्रिट () विधि को संग्रहीत करते हैं तो इसे कहते हैं और फिर कॉल करें SayIt (), संदर्भ वस्तु वैश्विक विंडो ऑब्जेक्ट में बदल जाती है, व्यक्ति ऑब्जेक्ट नहीं। चूंकि खिड़की ऑब्जेक्ट में कोई प्रॉपर्टी नहीं है, इसलिए जब हम इसे एक्सेस करने का प्रयास करते हैं तो हम अनिर्धारित होते हैं।

मेरी समस्या है

जब हम एक वेरिएबल में ग्रिड () विधि को संचित करते हैं तो इसे कहते हैं और फिर कहते हैं यह () क्यों संदर्भ वस्तु वैश्विक विंडो ऑब्जेक्ट में बदलती है?

यह युक्ति है,

P> निम्न चरणों का पालन किया जाता है जब फ़ंक्शन ऑब्जेक्ट F में निहित फ़ंक्शन कोड के लिए निष्पादन संदर्भ में प्रवेश करता है, एक कॉलर यह प्रदान किया गया, और एक कॉलर प्रदान की गई तर्क:
  1. यदि फ़ंक्शन कोड thisArg thisArg पर सेट करें।
  2. यदि thisArg null या अपरिभाषित ,

    > इसलिए जब सख्त मोड , यह में अपरिभाषित संदर्भित होगा, अन्यथा यह वैश्विक ऑब्जेक्ट को संदर्भित करेगा।

Comments

Popular posts from this blog

Selenium IDE Conditional Statements -

ruby on rails - How to avoid ActionController::InvalidCrossOriginRequest exception? -

sql - Select count and aggregate, but only unique -