this深刻理解

重點

this 是在調用 時被綁定的,徹底取決於函數的調用位置(也就是函數的調用方法)。 app


 

判斷this

根據優先級來判斷函數在某個調用位置應用的是哪條規則。按照下面的順序來進行判斷:函數

  1. 函數是否在new中調用(new綁定)?若是是的話this綁定的是新建立的對象。this

         var bar = new foo()
    
  2. 函數是否經過call、apply(顯式綁定)或者硬綁定調用?若是是的話,this綁定的是 指定的對象。對象

         var bar = foo.call(obj2)
    
  3. 函數是否在某個上下文對象中調用(隱式綁定)?若是是的話,this 綁定的是那個上 下文對象。it

         var bar = obj1.foo()
    
  4. 若是都不是的話,使用默認綁定。若是在嚴格模式下,就綁定到undefined,不然綁定到 全局對象。io

         var bar = foo()
    
相關文章
相關標籤/搜索