美文网首页
JavaScript - call、apply、bind

JavaScript - call、apply、bind

作者: 小棋子js | 来源:发表于2021-05-22 10:23 被阅读0次

基本语法:
function.call(thisArg, arg1, arg2, ...)
function.apply(thisArg, [argsArray])
function.bind(thisArg)
相同点:call、apply、bind都可以改变this的指向
不同点:
返回值不同
call、apply返回的是函数的调用
bind返回的是函数

let a = {
    name:'a',
    age:15,
    say(){
        console.log(`name:${this.name},age:${this.age}`);
    }
}
let b = {
    name:'b',
    age:20,
}
a.say.call(b);//name:b,age:20
a.say.apply(b);//name:b,age:20
a.say.bind(b);//没有打印任何东西,因为得到的是say函数,但没有调用
a.say.bind(b)();//name:b,age:20

传参方式不同
call传参是枚举参数
apply传参是传参数数组
bind在调用的时候传参

let a = {
    name:'a',
    age:15,
    say(job,hobby){
        console.log(`name:${this.name},age:${this.age},job:${job},hobby:${hobby}`);
    }
}
let b = {
    name:'b',
    age:20,
}

a.say.call(b,'student','唱、跳、rap')//name:b,age:20,job:student,hobby:唱、跳、rap
a.say.apply(b,['student','唱、跳、rap'])//name:b,age:20,job:student,hobby:唱、跳、rap
a.say.bind(b)('student','唱、跳、rap')//name:b,age:20,job:student,hobby:唱、跳、rap

相关文章

网友评论

      本文标题:JavaScript - call、apply、bind

      本文链接:https://www.haomeiwen.com/subject/hveynctx.html