📜  JavaScript 中的 this(1)

📅  最后修改于: 2023-12-03 14:42:30.218000             🧑  作者: Mango

JavaScript 中的 this

在 JavaScript 中,this 表示当前正在执行的代码所属的对象。在函数内部,this 表示函数的调用者。

全局作用域中的 this

在全局作用域中,this 表示全局对象。在浏览器中,全局对象是 window 对象。

console.log(this); // 输出 Window 对象
函数中的 this

在函数中,this 的值取决于函数的调用方式。当函数作为普通函数进行调用时,this 指向全局对象。

function foo() {
  console.log(this); // 输出 Window 对象
}

foo();

当函数作为对象的方法进行调用时,this 指向该对象。

const obj = {
  foo() {
    console.log(this); // 输出 obj 对象
  }
};

obj.foo();

当使用 new 运算符调用函数时,this 指向新创建的对象。

function Person(name) {
  this.name = name;
}

const person = new Person("John");

console.log(person.name); // 输出 John
箭头函数中的 this

在箭头函数中,this 的值由所在的词法作用域决定,而不是被调用时的情况。

const obj = {
  foo: () => {
    console.log(this); // 输出全局对象
  }
};

obj.foo();
显式绑定 this

可以使用 call() 和 apply() 函数显式地将 this 绑定到指定的对象。

function foo() {
  console.log(this.name);
}

const obj = {
  name: "John"
};

foo.call(obj); // 输出 John
小结

在 JavaScript 中,this 表示当前正在执行的代码所属的对象,具体的取值取决于调用方式。在全局作用域中,this 表示全局对象;在函数中,this 指向全局对象或该函数所属的对象;在箭头函数中,this 受词法作用域影响;显式绑定 this 可以通过 call() 和 apply() 函数实现。