判斷this

按照優(yōu)先級的有先后順序判斷this的指向:
1.函數(shù)是否在new中調用(new綁定)?如果是的話this綁定的是新創(chuàng)建的對象.

var bar = new fun()

2.函數(shù)是否用過call\apply(顯式綁定)或者硬綁定(bind)調用?如果是的話,this綁定的是指定的對象.

var bar = fun.call(obj)

3.函數(shù)是否在某個上下文對象中調用(隱式綁定)?如果是的話,this綁定的是那個上下文對象.

var bar = obj.foo()

4.如果都不是的話,使用默認綁定.如果在嚴格模式下,就綁定到undefined,否則綁定到全局對象.

var bar = foo()

-------------------------------我是分割線----------------------------------

var foo = {
  func1:  function (bar){
    bar();//輸出window, 而不是foo
    console.log(this);// 這里的this關鍵字是foo對象的一個引用}
}
  foo.func1(function(){console.log(this)})

當this值的宿主函數(shù)被封裝在另一個函數(shù)的內部或在另一個函數(shù)的上下文中被調用時,this值將永遠是對head對象的引用(this在ES5中是固定的).

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 官方中文版原文鏈接 感謝社區(qū)中各位的大力支持,譯者再次奉上一點點福利:阿里云產(chǎn)品券,享受所有官網(wǎng)優(yōu)惠,并抽取幸運大...
    HetfieldJoe閱讀 7,006評論 15 54
  • 特別說明,為便于查閱,文章轉自https://github.com/getify/You-Dont-Know-JS...
    殺破狼real閱讀 820評論 0 1
  • 根據(jù)優(yōu)先級來判斷this綁定的哪個對象1.函數(shù)是否在new中調用(new 綁定)?如果是的話this綁定的是新創(chuàng)建...
    _李雷閱讀 195評論 0 0
  • 幾乎每個人都聽過:“不忘初心,方得始終"卻很少有人知道下一句,”初心易得始終難守"做任何事情都一樣,難在堅持,也貴...
    玄紫閱讀 407評論 0 0

友情鏈接更多精彩內容