美文网首页
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