这三个东西都是可以改变this指向的问题
call(将要指向的对象,'参数1','参数2','参数3',.....);
apply(将要指向的对象,['参数1','参数2','参数3',.....])
bind(将要指向的对象)('参数1','参数2','参数3',.....)
很简单的,别担心看了用法你就会了!
这个是公用的两个人我就不写那么多遍了
var one = {
name: '张山',
age: 13,
habit: function (e) {
console.log('我叫' + this.name + ',今年' + this.age + ',我的爱好是' + e);
}
}
var two = {
name: '李四',
age: 13
}
call的用法:
(传参的时候需要你一个一个传)
one.habit('唱跳,rap,打篮球')
// 打印出来的结果是:我叫张山,今年13,我的爱好是唱跳,rap,打篮球
one.habit.call(two,'唱跳,rap,打篮球');
// 打印出来的结果是:我叫李四,今年13,我的爱好是唱跳,rap,打篮球
apply的用法
(传参的时候是一个数组)
one.habit('唱跳,rap,打篮球')
// 打印出来的结果是:我叫张山,今年13,我的爱好是唱跳,rap,打篮球
one.habit.apply(two,['唱跳,rap,打篮球']);
// 打印出来的结果是:我叫李四,今年13,我的爱好是唱跳,rap,打篮球
bind的用法
(它会返回一个函数,传参的时候需要你一个一个传)
one.habit('唱跳,rap,打篮球')
// 打印出来的结果是:我叫张山,今年13,我的爱好是唱跳,rap,打篮球
one.habit.bind(two)('唱跳,rap,打篮球');
// 打印出来的结果是:我叫李四,今年13,我的爱好是唱跳,rap,打篮球
用法就是这么简单,原理需要你去别的地方扒一扒啦!