📜  javascript中的this关键字(1)

📅  最后修改于: 2023-12-03 15:31:47.508000             🧑  作者: Mango

JavaScript 中的 this 关键字

在 JavaScript 中,this 是一个关键字,它引用了当前执行代码的对象。this 在 JavaScript 中经常用于指示函数访问它们所属于的对象。

环境

在编写 JavaScript 代码时,this 的值取决于它的环境。下面是关于 this 可能的环境:

  • 全局环境
  • 函数环境
  • 方法环境
全局环境

在全局环境中,this 引用全局对象 window 。这意味着当你在全局作用域内使用 this 时,它将返回 window 对象。

console.log(this === window); // true
函数环境

在函数环境中, this 的值取决于如何调用函数。

作为普通函数调用

如果函数作为普通函数调用,则 this 将引用全局对象。例如:

function myFunction() {
  console.log(this === window);
}

myFunction(); // true

作为对象的方法调用

如果函数是对象的方法,则 this 会引用该对象。

const obj = {
  myMethod() {
    console.log(this === obj);
  }
};

obj.myMethod(); // true

作为构造函数调用

当使用new关键字实例化一个函数时,this 将引用新创建的对象,这种情况下的函数被称为构造函数

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

const person = new Person('Lucy');
console.log(person.name); // Lucy
方法环境

类似于函数环境,方法环境中的 this 取决于方法是如何调用的。

const obj = {
  myMethod() {
    console.log(this === obj);
  }
};

obj.myMethod(); // true
ES6箭头函数中的 this

在 ES6 箭头函数中,this 指向词法上下文中此函数定义的函数。这意味着它不受如何调用它的影响。

const obj = {
  myMethod() {
    const myArrowFunction = () => {
      console.log(this === obj); // true
    }
    myArrowFunction();
  }
};

obj.myMethod();
结语

this 的值在 JavaScript 中很常见且重要,它可以帮助我们确定代码在什么环境下执行。搞清楚 this 的行为,可以让我们编写出更加健壮的代码。