当您以函数的形式调用时,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关键字的指向根据不同的使用方式而有所不同。在函数调用时,它指向全局对象;在方法调用时,它指向调用该方法的对象;在构造函数调用时,它指向新创建的对象。