修改this指向的三种方法
时间: 2024-05-09 11:15:07 浏览: 12
1. 使用bind()方法:bind()方法会创建一个新的函数,将其this指向指定的对象,并返回这个新函数。可以通过以下方式使用bind()方法:
```
function foo() {
console.log(this.bar);
}
var obj = {
bar: "Hello World"
};
var bindFoo = foo.bind(obj);
bindFoo(); // 输出 "Hello World"
```
2. 使用call()方法:call()方法会在函数调用时将this指向指定的对象,并立即执行这个函数。可以通过以下方式使用call()方法:
```
function foo() {
console.log(this.bar);
}
var obj = {
bar: "Hello World"
};
foo.call(obj); // 输出 "Hello World"
```
3. 使用apply()方法:apply()方法和call()方法类似,也是在函数调用时将this指向指定的对象,并立即执行这个函数。但是,apply()方法接受一个数组作为参数,这个数组包含了要传递给函数的参数。可以通过以下方式使用apply()方法:
```
function foo(a, b) {
console.log(this.bar + " " + a + " " + b);
}
var obj = {
bar: "Hello World"
};
foo.apply(obj, ["1", "2"]); // 输出 "Hello World 1 2"
```