Sunday 15 March 2015

javascript - 'this' keyword means differently at two places? -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 8 जवाब

    निम्नलिखित मेरा कोड है - < / P>

      (function ($) {obj = {alertteext}: function () {console.log ('called');}, testfunc: function () {console.log (this); Alerttext ();}, checkfunc: फ़ंक्शन () {आंतरिक (); फ़ंक्शन इनर () {console.log (this); this.alertText ()}}}}}) (jQuery)   

    जब मैं testFunc () , सतर्क पाठ () को this कीवर्ड पर ठीक से बुलाता हूं, कॉल करता हूं।

    हालांकि सतर्क पाठ () को यह का उपयोग करने के लिए अंदर अंदरूनी () (TypeError कह रहा है कि this.alertText एक फ़ंक्शन नहीं है) कॉल करने के बाद कॉल करने के बाद < कोड> चेकफ़ंक () फ़ंक्शन

    जब मैं ऊपर दिखाए गए के रूप में यह दिलाता हूं, मुझे इसके अंदर अलग सामग्री मिलती है - अंदर testFunc () ऑब्जेक्ट को दिखाने obj < / कोड>, जबकि अंदर आंतरिक () दिखाता है विंडो वस्तु।

    ऐसा क्यों है? यह दो स्थानों पर अलग क्यों करता है?

    को यह जावास्क्रिप्ट में कीवर्ड कॉलिंग प्रसंग पर निर्भर है, और इसमें एक बहु अर्थ है यह जावास्क्रिप्ट का सबसे जटिल और विचित्र सुविधा है। आप @ डार्क कथल्लू का पढ़ सकते हैं।

    जावास्क्रिप्ट में यह ऑब्जेक्ट को परिभाषित करने के तीन तरीके हैं, साथ ही इसमें समझाया गया है:

    1. someThing
    2. कुछ फंक्शन। एप्लिकेशन (कुछ, [arg1, arg2, argn])
    3. कुछ फ़ंक्शन (arg1, arg2, argN)
    4. कुछ फ़ंक्शन। Li>

      जैसा कि आप किसी ऑब्जेक्ट के बिना आंतरिक फ़ंक्शन को कॉल करते हैं, यह वैश्विक ऑब्जेक्ट को इंगित करता है यह के लिए checkFunc और testFunc वर्तमान वस्तु है जिसे आप obj को असाइन करते हैं। < P> अपनी समस्या को हल करने के लिए, बाहरी फ़ंक्शन में, एक var बनाओ जो = यह और उस को आंतरिक फ़ंक्शन में उपयोग करें। क्रॉकफोर्ड द्वारा इसकी सलाह दी गई है; -)

No comments:

Post a Comment