4 回答
TA贡献1815条经验 获得超13个赞
由于ECMA- / Javascript都是关于Objects和Contexts(它们也是Object的一些),每个变量都存储在一个这样的变量中(或者在函数,激活对象的情况下)。
所以如果你创建这样的变量:
var a = 1,
b = 2,
c = 3;
在全局范围(= NO函数上下文)中,您隐式将这些变量写入Global对象(= window在浏览器中)。
可以使用“点”或“括号”表示法访问这些:
var name = window.a;
要么
var name = window['a'];
这仅适用于在这种特定情况下的全局对象,因为变量对象中的全局对象是window对象本身。在函数的上下文中,您无法直接访问激活对象。例如:
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
}
new foobar();
new创建自定义对象(上下文)的新实例。没有new函数的范围也会global(= window)。这个例子将提醒undefined和1分别。如果我们将替换this.a = 1; this.b = 2为:
var a = 1,
b = 2;
两个警报输出都是未定义的。在这种情况下,变量a和b会被存储在从启动对象foobar,这是我们不能访问(当然,我们可以直接调用访问那些a和b)。
添加回答
举报