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

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