在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