由于ECMA-/ Javascript是所有关于
Objects和
Contexts(其也somekind的对象的),每个变量被存储在这样的被称为
可变 (或在功能方面,的情况下, 激活对象 )。
因此,如果您创建这样的变量:
var a = 1, b = 2, c = 3;
在 全局范围 (= NO函数上下文)中,您将这些变量隐式写入 全局对象 (
window在浏览器中= )。
可以使用“点”或“括号”表示法来访问它们:
var name = window.a;
要么
var name = window['a'];
这仅适用于在这种特定情况下的全局对象,因为 变量对象 中的 全局对象 是
window对象本身。在函数的上下文中,您没有直接访问
Activation Object的 权限。例如:
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)。



