20個JavaScript重點(diǎn)知識點(diǎn)(11)this機(jī)制
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
一、this 的本質(zhì)this 是一個動態(tài)綁定的執(zhí)行上下文對象,指向當(dāng)前函數(shù)運(yùn)行時的“所有者”。它的值在函數(shù)被調(diào)用時確定,而非定義時。理解 this 的關(guān)鍵在于分析函數(shù)是如何被調(diào)用的。 二、綁定規(guī)則1. 默認(rèn)綁定(獨(dú)立函數(shù)調(diào)用)當(dāng)函數(shù)作為獨(dú)立函數(shù)調(diào)用時(非方法、構(gòu)造函數(shù)等),非嚴(yán)格模式下 this 指向全局對象(瀏覽器中為 window),嚴(yán)格模式下為 undefined。
2. 隱式綁定(方法調(diào)用)當(dāng)函數(shù)作為對象方法調(diào)用時,this 指向調(diào)用該方法的對象。
3. 顯式綁定(call/apply/bind)通過
4. new 綁定(構(gòu)造函數(shù))使用 new 調(diào)用構(gòu)造函數(shù)時,this 指向新創(chuàng)建的實例對象。
5. 箭頭函數(shù)箭頭函數(shù)沒有自己的 this,繼承外層作用域的 this 值,且無法通過 call/apply 修改。
三、優(yōu)先級規(guī)則當(dāng)多個規(guī)則同時適用時,按以下優(yōu)先級決定 this 指向:
1. 回調(diào)函數(shù)中的 this常見于定時器、事件監(jiān)聽等場景,需要特別注意 this 指向:
2. 嵌套函數(shù)中的 this內(nèi)部函數(shù)不會繼承外部函數(shù)的 this(除非使用箭頭函數(shù))
3. 類中的 this類方法中的 this 指向?qū)嵗龑ο?,但需注意方法作為回調(diào)時的綁定問題:
五.this的4個實用小技巧
六、總結(jié)
理解 this 的關(guān)鍵在于分析函數(shù)的調(diào)用位置和調(diào)用方式。通過掌握綁定規(guī)則和優(yōu)先級,可以準(zhǔn)確預(yù)測代碼行為,避免常見陷阱。 閱讀原文:原文鏈接 該文章在 2025/3/27 13:25:03 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |