使用方法
call
可以调用函数,可以改变函数中this指向,参数依次排列在后面
apply
可以调用函数,可以改变函数中this指向,参数为数组格式
bind
不会调用函数,可以改变函数中this指向,参数与call一模一样
let boy = {
name: 'zz',
sayName(){
console.log(`我是${this.name}`);
},
eat(food1, food2){
console.log(`我喜欢吃${food1}和${food2}`)
}
}
let girl = {
name: 'pp'
}
boy.sayName.call(girl) // 我是pp
boy.eat.call(girl, 'pizza', '水煎肉') // 我喜欢吃pizza和水煎肉
boy.eat.apply(girl, ['pizza', '水煎肉']) // 我喜欢吃pizza和水煎肉
let fun = boy.eat.bind(girl, 'pizza', '水煎肉')
fun(); // 我喜欢吃pizza和水煎肉
基于call的多重继承
function Animal(){
this.eat = function(){
console.log('吃');
}
}
function Bird(){
this.fly = function(){
console.log('飞');
}
}
function Cat(){
Animal.call(this);
Bird.call(this);
this.sayName = function(){
console.log('pp');
}
}
let cat = new Cat(); // this指向的是小cat
cat.sayName();
cat.eat();
cat.fly();
如果本文对你有所帮助,感谢点一颗小心心,您的支持是我继续创作的动力!
最后:写作不易,如要转裁,请标明转载出处。
网友评论