在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