apply、call、bind用法
var name = 'lucy',age = 10;
var obj = {
name: 'jack',
objage: this.age,
myfunc: (sex,num) => {
console.log('this.name' + '的年龄是:' + this.age + ' 性别:' + sex + ' 手机号码:' + num);
}
}
var obj1 = {
name: 'tom',
age: 18
}
obj.myfunc.apply(obj1,['男','12345']); // tom的年龄是:18 性别:男 手机号码:12345
obj.myfunc.call(obj1,'男','12345'); // tom的年龄是:18 性别:男 手机号码:12345
obj.myfunc.bind(obj1,'男','12345')(); // tom的年龄是:18 性别:男 手机号码:12345
apply、call、bind共同点
apply、call、bind都可以改变函数中this的指向(重定义this对象),传递的第一个参数则是this将要指向的对象。
apply、call、bind不同点
apply() 的第二个参数只允许传递一个数组或者类数组,call()和bind()传递的参数都需要通过 ‘,’(逗号)隔开,除此之外,bind()的返回值是一个新的函数,不会被执行需要调用。