javascript改變函數體內部指向的apply與call用法實例詳解
來源:懂視網
責編:小采
時間:2020-11-27 20:15:43
javascript改變函數體內部指向的apply與call用法實例詳解
javascript改變函數體內部指向的apply與call用法實例詳解:call 和 apply 都是為了改變某個函數運行時的 context 即上下文而存在的,換句話說,就是為了改變函數體內部 this 的指向。call 和 apply二者的作用完全一樣,只是接受參數的方式不太一樣。方法定義applyFunction.apply(obj,args)方法能
導讀javascript改變函數體內部指向的apply與call用法實例詳解:call 和 apply 都是為了改變某個函數運行時的 context 即上下文而存在的,換句話說,就是為了改變函數體內部 this 的指向。call 和 apply二者的作用完全一樣,只是接受參數的方式不太一樣。方法定義applyFunction.apply(obj,args)方法能

call 和 apply 都是為了改變某個函數運行時的 context 即上下文而存在的,換句話說,就是為了改變函數體內部 this 的指向。
call 和 apply二者的作用完全一樣,只是接受參數的方式不太一樣。
方法定義
apply
Function.apply(obj,args)方法能接收兩個參數:
obj:這個對象將代替Function類里this對象
args:這個是數組或類數組,apply方法把這個集合中的元素作為參數傳遞給被調用的函數。
call
call方法與apply方法的第一個參數是一樣的,只不過第二個參數是一個參數列表
在非嚴格模式下當我們第一個參數傳遞為null或undefined時,函數體內的this會指向默認的宿主對象,在瀏覽器中則是window
用法
"劫持"別人的方法
此時foo中的logName方法將被bar引用 ,this指向了bar
實現繼承
在實際開發中,經常會遇到this指向被不經意改變的場景。
有一個局部的fun方法,fun被作為普通函數調用時,fun內部的this指向了window,但我們往往是想讓它指向該#test節點,見如下代碼:
使用call,apply我們就可以輕松的解決這種問題了
當然你也可以這樣做,不過在ECMAScript 5的strict模式下,這種情況下的this已經被規定為不會指向全局對象,而是undefined:
輸出:undefined
}
func();
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
javascript改變函數體內部指向的apply與call用法實例詳解
javascript改變函數體內部指向的apply與call用法實例詳解:call 和 apply 都是為了改變某個函數運行時的 context 即上下文而存在的,換句話說,就是為了改變函數體內部 this 的指向。call 和 apply二者的作用完全一樣,只是接受參數的方式不太一樣。方法定義applyFunction.apply(obj,args)方法能