- 当以函数的形式调用时,this是window
- 当以方法的形式调用时,谁调用方法this就是谁
- 当以构造函数的形式调用时,this就是新创建的那个对象
当您以函数的形式调用时,this指向全局对象,在浏览器环境下通常是window对象。例如:
function hello() {
console.log(this);
}
hello(); // 输出: Window 对象
当您以方法的形式调用时,this指向调用该方法的对象。例如:
const obj = {
name: 'Alice',
sayHello: function() {
console.log(this.name);
}
};
obj.sayHello(); // 输出: Alice
当您以构造函数的形式调用时,this指向新创建的对象。例如:
function Person(name) {
this.name = name;
}
const person1 = new Person('Bob');
console.log(person1.name); // 输出: Bob
const person2 = new Person('Charlie');
console.log(person2.name); // 输出: Charlie
在上面的例子中,当我们使用 new Person('Bob')
来创建person1对象时,this指向了person1对象,并且将name属性设置为'Bob'。同样,当我们使用 new Person('Charlie')
来创建person2对象时,this指向了person2对象,并且将name属性设置为'Charlie'。
总结来说,this关键字的指向根据不同的使用方式而有所不同。在函数调用时,它指向全局对象;在方法调用时,它指向调用该方法的对象;在构造函数调用时,它指向新创建的对象。