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, "关羽", "张飞")()











网友评论