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