1、call的用法
call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。
let food={
name:'apple',
fruit(a,b){
console.log(a+b)
console.log(this.name)
}
}
food.fruit.call(food,1,2) //output: "3" "apple"
food.fruit.call({name:"orange"}) //output:"NaN" "orange"
2、apply的用法
与call() 方法类似,只有一个区别,就是 call() 方法接受的是一个参数列表,而 apply() 方法接受的是一个包含多个参数的数组。
let numbers=[1,2,3]
let food={
name:'apple',
fruit(a,b){
console.log(a+b)
console.log(this.name)
}
}
food.fruit.apply(food,numbers) //output:"3" " apple"
food.fruit.apply({name:"orange"}) //output:"NaN" "orange"
3、bind 的用法
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
const fruit = {
name: "apple",
getName: function(){
return this.name;
}
};
const unGetName = fruit.getName; //该函数被全局调用
console.log("unGetName:"+unGetName()); //output: 空或undefined
const GetName = fruit.getName.bind(fruit);
console.log("GetName:"+GetName()) //output: "apple"