区别
话不多说直接上代码
<script>
// 建两个对象
let p1 = {
name: '张三',
hobby: 'game',
play: function (sex, age) {
console.log('我是' + this.name + ',性别:' + sex + ',今年:' + age + ',喜欢:' + this.hobby);
}
}
let p2 = {
name: '坤坤',
hobby: '唱跳rap篮球'
}
// 调用play方法
p1.play('男', 19);// 我是张三性别男今年19喜欢game
p1.play.call(p2, '男', 20);// 我是坤坤,性别:男,今年:20,喜欢:唱跳rap篮球
p1.play.apply(p2, ['男', 20]);// 我是坤坤,性别:男,今年:20,喜欢:唱跳rap篮球
p1.play.bind(p2, '男', 20)();// 我是坤坤,性别:男,今年:20,喜欢:唱跳rap篮球
p1.play.bind(p2, '男', 20);//并没有调用函数
// 上面可以观察到
// 1.call和apply都是调用函数,并且改变函数内部this的指向
// 2.call和apply传递参数的方式不同
// 3.bind是返回对应函数,便于稍后调用,bind绑定this后不会立即调用
</script>