javascript 中 this 在非严格模式下指向调用当前函数的对象。如果函数被作为对象的方法调用,this 指向该对象;如果是独立调用或作为普通函数调用,this 指向全局对象(在浏览器中是 window)。

方法调用时 this 指向谁
当函数作为对象的一个属性被调用时,this 指向该对象。这是最常见的情况,开发者通常期望 this 能够访问对象的内部数据。

const user = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
user.greet(); // 输出: Alice
上述代码中,greet 方法是 user 对象的一个属性。当通过 user.greet() 调用时,this 绑定到 user 对象,因此 this.name 返回 'Alice'。
独立调用时 this 指向谁
当函数被独立调用,即不作为任何对象的方法时,在非严格模式下,this 指向全局对象。在浏览器环境中,全局对象是 window。

function showThis() {
console.log(this === window); // 输出: true
}
showThis();
在上述代码中,showThis 函数被独立调用,没有通过任何对象引用。因此,this 指向全局对象 window,所以 this === window 为 true。
构造函数调用时 this 指向谁
当函数作为构造函数使用,即通过 new 关键字调用时,this 指向新创建的实例对象。这是 JavaScript 中创建对象的一种常见模式。
function Person(name) {
this.name = name;
}
const person = new Person('Bob');
console.log(person.name); // 输出: Bob
在上述代码中,Person 函数被用作构造函数。当使用 new Person('Bob') 调用时,this 指向新创建的 person 对象,并将 name 属性设置为 'Bob'。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











