在JavaScript中,call、apply和bind是Function對象自帶的三個方法,本文將通過幾個場景的應(yīng)用,來詳細(xì)理解三個方法。
call()
call() 方法在使用一個指定的this值和若干個指定的參數(shù)值的前提下調(diào)用某個函數(shù)或方法。
當(dāng)調(diào)用一個函數(shù)時,可以賦值一個不同的 this 對象。this 引用當(dāng)前對象,即 call 方法的第一個參數(shù)。
通過 call 方法,你可以在一個對象上借用另一個對象上的方法,比如Object.prototype.toString.call([]),就是一個Array對象借用了Object對象上的方法。
語法 fun.call(thisArg[, arg1[, arg2[, ...]]])
thisArg
在fun函數(shù)運(yùn)行時指定的this值。需要注意的是下面幾種情況
(1)不傳,或者傳null,undefined, 函數(shù)中的this指向window對象
(2)傳遞另一個函數(shù)的函數(shù)名,函數(shù)中的this指向這個函數(shù)的引用,并不一定是該函數(shù)執(zhí)行時真正的this值
(3)值為原始值(數(shù)字,字符串,布爾值)的this會指向該原始值的自動包裝對象,如 String、Number、Boolean
(4)傳遞一個對象,函數(shù)中的this指向這個對象
arg1, arg2, ...
指定的參數(shù)列表。
例子
初級應(yīng)用例子
function a(){ //輸出函數(shù)a中的this對象 console.log(this); }//定義函數(shù)bfunction b(){} var obj = {name:'這是一個
主站蜘蛛池模板:
油尖旺区|
禄劝|
竹北市|
大邑县|
赤峰市|
文登市|
东至县|
潢川县|
溧水县|
栾川县|
勐海县|
都江堰市|
宜川县|
伊宁市|
昌黎县|
乌鲁木齐县|
乌海市|
钟祥市|
邹平县|
额尔古纳市|
通道|
兴国县|
太原市|
理塘县|
固阳县|
运城市|
兴宁市|
法库县|
伊春市|
开封市|
博白县|
湖州市|
晋中市|
平顺县|
扶沟县|
兴隆县|
安阳县|
孝感市|
安多县|
宜兰县|
宜宾县|