我已经开始尝试用一些更高级的概念来填补我的JavaScript知识空白。
我认为我基本上理解了作用域的工作方式。对象从原型和全局作用域继承,而函数在自身内部提供更传统的块级作用域。
我现在遇到困难的是:
function a(){
console.log(this.z);
}
a.z = 12;
a(); //returns undefined :(
我希望输出 12,但是实际结果不是。请问变量z被存储在哪里?例子中的"this"指的是什么?
我已经开始尝试用一些更高级的概念来填补我的JavaScript知识空白。
我认为我基本上理解了作用域的工作方式。对象从原型和全局作用域继承,而函数在自身内部提供更传统的块级作用域。
我现在遇到困难的是:
function a(){
console.log(this.z);
}
a.z = 12;
a(); //returns undefined :(
我希望输出 12,但是实际结果不是。请问变量z被存储在哪里?例子中的"this"指的是什么?
this
) 设置为它被调用的对象。如果函数没有附加到任何对象上,默认情况下会使用全局对象 (window
对象在浏览器中) *。this
指的是全局对象,而不是 a
。在全局对象中,z
尚未定义。这就是为什么返回 undefined
的原因。function a() {
console.log(a.z); // Use `a` itself, instead of `this`.
}
a.z = 12;
a();
* 在严格模式下,如果不带任何显式对象引用调用函数,则this
将被设置为undefined
。
this
通常不指函数对象(与函数作用域无关!),而是指函数的“上下文”。 - user2864740