call、apply、bind的用法

let animal1 = {
  type: "鼠",
  eat(food) {
    console.log(`${this.type}吃${food}`);
  },
};
let animal2 = {
  type: "猫",
};

animal1.eat("玉米"); //鼠吃玉米

animal1.eat.call(animal2, "鼠"); //猫吃鼠 
animal1.eat.apply(animal2, ["鼠"]); //猫吃鼠
animal1.eat.bind(animal2, "鼠")(); //猫吃鼠

结论:call,apply,bind的第一个参数都是this,第二个参数都是其他参数,不同的是:

  • call中的参数可以有很多,用逗号分隔开。
  • apply中,第二个参数必须是数组,来存放其他参数。
  • bind中,fn.bind(x,y,z,...)会返回一个函数,fn.bind(x,y,z,...)()才会执行fn
posted @ 2020-12-21 21:26  时光傀儡师  阅读(95)  评论(0编辑  收藏  举报