javascript中call與apply的區別

做用

在javascript中,call跟apply的做用是相同的,都是改變上下文對象this的指向;javascript

//call方法
let obj = {
    name: 'Ai5tbb'
};
function getName(a, b) {
    console.log(a + ' ' + this.name + ' ' + b);
}
getName.call(obj, 'A', 'B'); //Ai5tbb {A}
//{A}處的代碼把函數getName()的上下文對象this改變成obj的上下文對象,此時代碼至關於:
//function getName() {
//	console.log(obj.name);
//}


//apply方法
let obj = {
    name: 'Ai5tbb'
};
function getName(a, b) {
    console.log(a + ' ' + this.name + ' ' + b);
}
getName.apply(obj, ['A', 'B']); //Ai5tbb {A}
//{A}處的代碼跟上面call方法含義同樣

區別

如上面代碼所示,二者的做用是同樣的,惟一區別就是傳參方式不一樣,call方法傳的是參數列表,而apply方法傳的是數組;java

相關文章
相關標籤/搜索