this是什么?
谁调用当前函数或者方法, this就是谁
这三个方法的作用是什么?
这三个方法都是用于修改函数或者方法中的this的
1. bind方法作用
修改函数或者方法中的this为指定的对象, 并且会 返回 一个修改之后的 新函数 给我们
注意点: bind方法除了可以修改this以外, 还可以传递参数, 只不过 参数 必须写在 this对象的后面
2. call方法作用
修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数
注意点: call方法除了可以修改this以外, 还可以传递参数, 只不过参数必须写在this对象的后面
3. apply方法作用
修改函数或者方法中的this为指定的对象, 并且会立即调用修改之后的函数
注意点: apply方法除了可以修改this以外, 还可以传递参数, 只不过参数必须通过数组的方式传递
function test(a, b) {
console.log("传递的形参: ",a, b);
console.log("this指向: ",this);
}
let obj = { name: "zs" }
test(10, 20);
//传递的形参: 10 20
//this指向: window {window:window self:Window.................Window对象}
let fn = test.bind(obj, 10, 20);
fn();
//传递的形参: 10 20
//this指向: {name: 'zs'}
test.call(obj, 10, 20);
//传递的形参: 10 20
//this指向: {name: 'zs'}
test.apply(obj, [10, 20]);
//传递的形参: 10 20
//this指向: {name: 'zs'}