在JavaScript中,有几种方法可以改变函数中this
的指向。
使用.bind()
方法:
function greet() {
console.log(this.message);
}
const context = { message: 'Hello World!' };
const boundGreet = greet.bind(context);
boundGreet(); // 输出:Hello World!
.bind()
方法会创建一个新函数,当被调用时,其this
关键字设置为提供的值。
使用.call()
方法:
function greet() {
console.log(this.message);
}
const context = { message: 'Hello World!' };
greet.call(context); // 输出:Hello World!
.call()
方法调用一个函数,其具有一个指定的this
值和分别传递的参数,使用call方法改变this指向后原函数会立即执行,且此方法只是临时改变this指向一次。。
使用.apply()
方法:
function greet() {
console.log(this.message);
}
const context = { message: 'Hello World!' };
greet.apply(context); // 输出:Hello World!
.apply()
方法调一个具有给定this
值的函数,以及作为一个数组(或类似数组对象)提供的参数,和call一样,apply也只是临时改变一次this指向,并立即执行。