call,apply和bind區(qū)別

這三個函數(shù)的作用都是將函數(shù)綁定到上下文中,用來改變函數(shù)中this的指向;三者的不同點在于語法的不同

fun.call(thisArg[, arg1[, arg2[, ...]]])

fun.apply(thisArg, [argsArray])

所以apply和call的區(qū)別是call方法接受的是若干個參數(shù)列表,而apply接受的是一個包含多個參數(shù)的數(shù)組

而bind的()方法創(chuàng)建一個新的函數(shù),當(dāng)被調(diào)用時,將其this關(guān)鍵字設(shè)置為提供的值,在調(diào)用新的函數(shù)是,在任何提供之前提供一個給定的參數(shù)序列。

var bindFn = fun.bind(thisArg[, arg1[, arg2[, ...]]])

bindFn()

例子:

var name = 'window';

var sayName = function (param) {

? ? console.log('my name is:' + this.name + ',my param is ' + param)

};

//my name is:window,my param is window param

sayName('window param')

var callObj = {

? ? name: 'call'

};

//my name is:call,my param is call param

sayName.call(callObj, 'call param');

var applyObj = {

? ? name: 'apply'

};

//my name is:apply,my param is apply param

sayName.apply(applyObj, ['apply param']);

var bindObj = {

? ? name: 'bind'

}

var bindFn = sayName.bind(bindObj, 'bind param')

//my name is:bind,my param is bind param

bindFn()


開心最重要,不要理會生活中的妖魔鬼怪。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容