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