📅  最后修改于: 2023-12-03 15:31:47.508000             🧑  作者: Mango
在 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
指向词法上下文中此函数定义的函数。这意味着它不受如何调用它的影响。
const obj = {
myMethod() {
const myArrowFunction = () => {
console.log(this === obj); // true
}
myArrowFunction();
}
};
obj.myMethod();
this
的值在 JavaScript 中很常见且重要,它可以帮助我们确定代码在什么环境下执行。搞清楚 this
的行为,可以让我们编写出更加健壮的代码。