call()与apply()用法

call()和apply()的作用都是一样的——通过改变函数体内部 this 的指向,借用对象的方法的目的

还是举个栗子吧:

function Cat(){
    this.food = 'fish';
    this.say= function(){
         console.log('I love ' + this.food)
   }
}       //小猫构造函数
var keke = new Cat();   //一只小猫,由小猫构造函数创建

var diandian = {food:'bone'};   //又来一只小狗
//小猫和小狗一起去餐厅吃饭
keke.say();    //I love fish
//小狗没有say 方法,但是他也想说自己喜欢的食物,于是

keke.say.call(diandian);  //I love bone借用小猫的方法。两人一起愉快地吃自己喜欢的食物了。

 这两个方法的区别在于参数,call()传递给函数的参数必须列举出来,apply()传递的是参数数组.

原文地址:https://www.cnblogs.com/renbo/p/8476396.html