this 是 JavaScript 中一个关键字,它通常指向当前函数的调用者。具体而言,当函数被调用时,this指向调用该函数的对象。
但是,当函数作为简单函数调用时,this将指向全局对象(在浏览器中为window对象)。
在 JavaScript 中,this的值是在函数被调用时确定的,而不是在函数被定义时确定的。
可以使用 call(), apply() 和 bind() 方法来改变函数中 this 的指向。
call()和apply()可以显式地设置函数的 this 值,并立即执行该函数。
let obj = { name: "John" };
function greet() {
console.log("Hello, " + this.name);
}
greet.call(obj); // 输出 "Hello, John"
greet.apply(obj); // 输出 "Hello, John"
bind()方法返回一个新的函数,它的 this 值被绑定到指定的对象。但是,它不会立即执行该函数。相反,它返回一个新的函数,可以稍后调用。
let obj = { name: "John" };
function greet() {
console.log("Hello, " + this.name);
}
let boundGreet = greet.bind(obj);
boundGreet(); // 输出 "Hello, John"