var cat = {
name: "喵喵",
eatFish: function (param1, param2) {
console.log("吃鱼");
console.log("this的指向=>");
console.log(this);
console.log(param1, param2);
},
};
var dog = {
name: "汪汪",
eatBone: function (param1, param2) {
console.log("啃骨头");
console.log("this的指向=>");
console.log(this);
console.log(param1, param2);
},
};
//第一种,用call方法
cat.eatFish.call(cat, "旺财-13岁", "call");
//第二种,用apply方法,参数不一样
cat.eatFish.apply(dog, ["旺财-13岁", "apply"]);
var eatFishFun = cat.eatFish.bind(dog, "旺财-13岁", "bind"); //返回的是方法
eatFishFun();
这三个操作都是改变方法内部this的指向,call和apply只是参数形式不同,bind返回方法,相当于柯里化,提前绑定输入后输出方法。apply输入参数为数组形式。