javascript 中 apply call bind的區(qū)別

call,apply,bind 都是改變上下文的,但是call apply是立即執(zhí)行的,而bind是返回一個改變上下文的函數(shù)副本
call返回的參數(shù)依次傳入,而apply返回的參數(shù)是一個數(shù)組,三個參數(shù)一下call較好,而參數(shù)較多時,apply函數(shù)的返回數(shù)組效率較高

var Person= {
    name: "張三",
    age: 23
}

function getName(x, y) {
    console.log(x + "," + y);
    console.log(this);
    console.log(this.name);
}

// 將getName()函數(shù)的this改變?yōu)镻erson
getName.apply(Person, [1, 2]); 
// aa.call(Person, 4, 5) // call方法
// aa.bind(Person, 4, 5)() // bind返回的是一個函數(shù)副本,所以需要自執(zhí)行一次
/*
*輸出
*1,2
*{name: '張三', age: 23}
*張三
*/
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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