this指向詳解


this

this 指向並不是在函數定義的時候確定的,而是在調用的時候確定的。換句話說,函數的調用方式(直接調用、方法調用、new調用、bind、call、apply、箭頭函數)決定了 this 指向。


 直接調用

函數內部的 this 指向全局對象,在瀏覽器中全局對象是 window,在 NodeJs 中全局對象是 global。直接調用並不是指在全局作用域下進行調用,在任何作用域下,直接通過 函數名(...) 來對函數進行調用的方式,都稱為直接調用。

方法調用

函數中的 this 指向調用該方法的對象。通過對象來調用其方法函數,它是 對象.方法函數(...) 這樣的調用形式。

new調用

在 es5 中,用 new 調用一個構造函數,會創建一個新對象,而其中的 this 就指向這個新對象

箭頭函數

箭頭函數沒有自己的 this 綁定,箭頭函數中使用的 this,其實是直接包含它的那個函數或函數表達式中的 this


 Ps:非函數被調用時(這里分別打印40和10)

當obj在全局聲明時,無論obj.c在什么地方調用,這里的this都指向全局對象,而當obj在函數環境中聲明時,這個this指向undefined,在非嚴格模式下,會自動轉向全局對象。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM