this的查找規則會逐層往上查找,最終位全域window
優先級問題:顯式系結(顯式系結與new系結沒有可比性)new系結>隱式系結>默認系結
在編程中,this 是一個關鍵字,代表當前物件或者函式的執行環境,this 的指向性問題是指在不同的情況下,this 指向的物件不同,從而影響代碼的行為,
在 JavaScript 中,this 的值可以通過四種不同的呼叫方式來確定其指向性:
-
作為函式呼叫:當 this 在普通函式中使用時,它將指向全域物件(瀏覽器中為 window,Node.js 中為 global),默認系結,但是在嚴格模式下在獨立函式種呼叫this,那么this所指向的位undefined
獨立函式:函式沒有系結到某個物件上進行呼叫
-
作為方法呼叫:當一個函式作為物件的一個屬性被呼叫時,this 將會指向該物件也被叫做隱式系結,
-
使用 call() 或 apply() 呼叫:這兩個方法可以改變函式的作用域(執行環境),并顯式地指定函式執行時的 this 系結物件也被叫做顯式系結,
apply函式在this中的使用方式apply("apply",["zhangsan",11,2]):它能夠傳遞兩個引數(第一個引數:系結this 第二個引數:是一個陣列用來傳入額外的實參)
call函式在this中的使用方式(call,("call","lisi",12,22)):它可以傳遞很多引數(第一個引數:系結this,其余的可以作為引數傳遞到函式中)
-
作為建構式呼叫:在使用 new 關鍵字實體化一個物件時,this 將會指向新創建的物件使用new系結,
同時需要注意的是,在箭頭函式中,this 的值與所在背景關系中的一樣,即與函式定義時的this值保持一致,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/556249.html
標籤:其他
上一篇:this指向性問題
下一篇:返回列表