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

相关文章
相关标签/搜索