美文网首页js
JavaScript中apply、call和bind的区别

JavaScript中apply、call和bind的区别

作者: townYouth | 来源:发表于2021-06-07 13:36 被阅读0次

    js中改变this指向的方式主要有三种:apply、call和bind

    相同点:
    都是用来改变函数的this对象的指向的;
    第一个参数都是this要指向的对象;
    都可以利用后续参数传参。

    不同点:

    call和apply都是对函数的直接调用;
    bind方法返回的是一个函数,后面还需要加()进行调用;
    call和bind后面跟的参数都是一一对应的;
    apply传参需要使用数组的形式一一对应;

    let liubei = {
      name: '刘备',
      age: '50',
      skill: function (brother2, brother3) {
        console.log('吾乃' + this.name, '我的兄弟有:' + brother2 + '、' + brother3)
      }
    }
    let zhaoyun= {
      name: '赵云',
      age: '40'
    }
    liubei.skill.apply(zhaoyun,[ "关羽", "张飞"])
    liubei.skill.call(zhaoyun, "关羽", "张飞")
    liubei.skill.bind(zhaoyun, "关羽", "张飞")()
    

    相关文章

      网友评论

        本文标题:JavaScript中apply、call和bind的区别

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