Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用DOM访问全局JS上下文的属性_Javascript_Dom_Global Variables - Fatal编程技术网

Javascript 不使用DOM访问全局JS上下文的属性

Javascript 不使用DOM访问全局JS上下文的属性,javascript,dom,global-variables,Javascript,Dom,Global Variables,我想在我的应用程序中访问全局JS作用域的所有属性 没有DOM,因此我无法使用以下命令: for (var attr in window) { // attr is in the global scope } 有没有办法获取对全局JS作用域的引用?在非严格模式下,您可以使用以下方法获取对全局对象的引用: 如果您没有在调用中设置它,它默认为全局对象。这将在任何执行上下文中工作(但不是在严格模式下)。创建引用全局对象的全局变量更简单: var global = this; 或者把它传给一个生命

我想在我的应用程序中访问全局JS作用域的所有属性

没有DOM,因此我无法使用以下命令:

for (var attr in window) {
  // attr is in the global scope
}

有没有办法获取对全局JS作用域的引用?

在非严格模式下,您可以使用以下方法获取对全局对象的引用:

如果您没有在调用中设置它,它默认为全局对象。这将在任何执行上下文中工作(但不是在严格模式下)。创建引用全局对象的全局变量更简单:

var global = this;
或者把它传给一个生命:

(function (global) {
  // In here, global === global object
  ...
}(this))

无论什么都合适。

如果没有DOM,您的环境是什么?Node?self,这通常有效。您是否有效地询问是否可以访问给定执行上下文的环境记录?如果是这样,答案几乎是“否”。@CrazyTrain-指定在全局执行上下文中引用全局对象。它还指定当不处于严格模式时,如果调用未设置为其他对象,则默认为全局对象。因此,虽然环境不需要(也不需要)提供对任何执行上下文/变量对象/激活对象/任何对象的访问,但它们需要提供对全局对象(实际上是全局变量对象)的访问@RobG:我的评论是,
窗口
属性是主机提供的属性,不是必需的。+1我想知道ECMAScript是否需要
来引用全局执行上下文中的全局对象,似乎确实如此。
(function (global) {
  // In here, global === global object
  ...
}(this))