改变this指向
时间: 2023-08-20 07:09:15 浏览: 111
JS中改变this指向的方法(call和apply、bind)
5星 · 资源好评率100%
在 JavaScript 中,可以使用 `call()`、`apply()` 或 `bind()` 方法来改变函数的 `this` 指向。
`call()` 方法接收一个指定的 `this` 值和一组参数列表,然后调用该函数。例如,下面的例子将 `this` 指向 `obj` 对象:
```
function sayHello() {
console.log(`Hello, ${this.name}!`);
}
const obj = {
name: 'Alice'
};
sayHello.call(obj); // 输出 "Hello, Alice!"
```
`apply()` 方法也是改变 `this` 指向的一种方式,但它接收一个数组作为参数列表。例如,下面的例子与上面的例子类似,但是使用了 `apply()` 方法:
```
function sayHello() {
console.log(`Hello, ${this.name}!`);
}
const obj = {
name: 'Alice'
};
sayHello.apply(obj); // 输出 "Hello, Alice!"
```
`bind()` 方法返回一个新函数,该函数的 `this` 值被绑定到指定的对象。例如,下面的例子创建一个新函数 `sayHelloToBob`,它的 `this` 值被绑定到 `obj` 对象:
```
function sayHello() {
console.log(`Hello, ${this.name}!`);
}
const obj = {
name: 'Alice'
};
const sayHelloToBob = sayHello.bind(obj);
sayHelloToBob(); // 输出 "Hello, Alice!"
```
阅读全文