JS中精選this關鍵字的指向規律你記住了嗎

  1.首先要明確:
          誰最終調用函數,this指向誰
          this指向的永遠只多是對象!!!!!
         this指向誰永遠不取決於this寫在哪,而取決於函數在哪裏調用!
         this指向的對象,咱們稱之爲函數的上下文context,也叫作函數的調用者是誰!
  2.this指向的規律(與函數調用的方式息息相關)
  this指向的狀況取決於函數調用的方式有哪些(總結以下):
      2.1.經過函數名()直接調用--this 指向window;                     
 function func(){ console.log(this); }
  func();

      2.2.經過對象.函數名()調用的--this指向這個對象 數組

                狹義對象: this指向--obj    app

                  var obj={ name:"obj", func1:func }; obj.func1();

 

                 廣義對象: this指向--div函數

 document.getElementById("div").onclick=function(){ this.style.backgroundColor="red"; }

    2.3. this指向——數組arrthis

var arr=[func,1,2,3]; arr[0]();

    2.4.函數做爲window內置函數的回調函數調用,this指向window setInterval,setTimout等spa

setInterval(func,1000); setTimeout(func,1000)
   2.5.函數做爲構造函數,用new關鍵字調用時:this指向新定義的對象obj
    var obj=new func();

  2.6.  經過call、apply、bind調用,this指向咱們規定的對象。code

  Func.call(obj,參數一,參數2,參數3.。。。)對象

  Func.allply(obj,[ 參數一,參數2,參數3.。。。])blog

   Func.bind(obj)( 參數一,參數2,參數3)   var f = func.bind(obj).   f(…….);get

    小試牛刀:
var fullname = 'John Doe'; var obj = { fullname: 'Colin Ihrig', prop: { fullname: 'Aurelio De Rosa', getFullname: function() { return this.fullname; } } }; console.log(obj.prop.getFullname()); // Aurelio De Rosa //函數最終調用者:obj.prop this--->obj.prop
         
        var test = obj.prop.getFullname; console.log(test()); // John Doe // 函數最終調用者: 函數() window this-->window
相關文章
相關標籤/搜索