作用
在javascript中,call跟apply的作用是相同的,都是改变上下文对象this的指向;
//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方法传的是数组;