2013-02-13 47 views
5

में यह एक उदाहरण है: समारोह एक (मैं कीवर्ड के बारे में उलझन में हूँ 'इस' जावास्क्रिप्ट

function one() { 

    var a = 1; 
    two(); 

    function two() { 

     var b = 2; 
     three(); 

     function three() { 

      var c = 3; 
      alert(a + b + c); // 6 

     } 
    } 
} 

one()​; //calling the function 

अब जब हम कहते हैं), परिणाम 6 है।

तो यह स्कोप श्रृंखला के बारे में है, सभी चर हल हो गए हैं, अब मेरे पास एक प्रश्न है।

हमें इस यह "कीवर्ड की आवश्यकता क्यों है जब सभी चर स्कोप श्रृंखला के माध्यम से हल हो रहे हैं?

तो अगर हम निम्नलिखित कार्य हो:

function a() { 
    var a = 'function a'; 

    function b() { 
     var b = 'function b'; 
     alert (a); //will be function a, without keyword this 
     alert (this.a); // what will be the effect of this line 
    } 
} 

"इस" कीवर्ड हमेशा मुझे confuses!

कोई व्यक्ति कृपया एक सरल तरीके से और विस्तार से समझाएं। वस्तु जिसका विधि या निर्माता कहा जाता है की जा रही है -

+0

इसे पढ़ें: http://www.quirksmode.org/js/this.html – BizApps

+0

यह ऐसा नहीं है जो आपको लगता है। – Mehrdad

उत्तर

-1

इस कीवर्ड

एक उदाहरण विधि या एक निर्माता के भीतर का उपयोग करना, यह वर्तमान वस्तु के लिए एक संदर्भ है। आप वर्तमान ऑब्जेक्ट के किसी भी सदस्य को उदाहरण विधि या किसी कन्स्ट्रक्टर के भीतर इसका उपयोग करके संदर्भित कर सकते हैं। फ़ील्ड

इस कीवर्ड का उपयोग करने का सबसे आम कारण यह है कि एक फ़ील्ड किसी विधि या कन्स्ट्रक्टर पैरामीटर द्वारा छायांकित है।

0

यह कीवर्ड फ़ंक्शन के दायरे को संदर्भित करता है। आपके उपरोक्त कोड में this.aप्रिंट नहीं करेगा क्योंकि कोई नाम नहीं है। इस कीवर्ड का उपयोग वर्तमान स्थानीय क्षेत्र और वैश्विक दायरे को संदर्भित करने के लिए किया जाता है। इसलिए यदि आपके पास आपके फ़ंक्शन बी में एक वैरिएबल था, तो यह .a फ़ंक्शन बी में परिभाषित वैरिएबल को संदर्भित करेगा और इसके बाहर नहीं। जबकि फंक्शन बी के बाहर इसका जिक्र करते हुए वैश्विक दायरे का उल्लेख किया जाएगा।

3

वे कीवर्ड this जावास्क्रिप्ट में एक समारोह में निम्न तरीकों से हल हो गई है -

  1. एक समारोह पर या किसी वस्तु के माध्यम से लागू किया जाता है, उस वस्तु मंगलाचरण संदर्भ या 'यह' मूल्य है समारोह के लिए। उदाहरण के लिए -

    var o = { 
        f : function(){ 
         //do something 
        } 
    } 
    

    अगर हम वस्तु 'o' वस्तु का उपयोग कर 'o' के विधि 'एफ' कहते हैं -

    o.f()// in method f, 'this' refers to o inside the method o 
    
  2. समारोह पर या किसी वस्तु के माध्यम से नहीं लागू नहीं है, तो वर्तमान विंडो ऑब्जेक्ट फ़ोकस के लिए आमंत्रण संदर्भ या this मान है। उदाहरण के लिए -

    function f(){ 
        //do something 
    } 
    
    //calling f 
    f();// 'this' will refer to current window object 
    

आपके मामले में, यह वर्तमान विंडो वस्तु को संदर्भित करता है और this.a समारोह एक है, जिसे आप वैश्विक दायरे में परिभाषित किया है करने के लिए एक संदर्भ है।

इसके अतिरिक्त, कॉल करने के दौरान समारोह के लिए आमंत्रण संदर्भ या 'यह' मान प्रदान किया जा सकता है। कृपया Function.prototype.call method - JavaScript | MDN और Function.prototype.apply method - JavaScript | MDN