列出Node.js中的所有全局变量

lia*_*mat 11 javascript node.js

我正在尝试列出所有全局变量,包括那些引用内置对象的变量.

在Chrome的控制台我可以简单地输入this并取回所有的钥匙,包括像String,Number等等.

但是,当我在Node.js中执行此操作时,我得到的更少:

> Object.keys(this)
[ 'global',
  'process',
  'GLOBAL',
  'root',
  'Buffer',
  'setTimeout',
  'setInterval',
  'clearTimeout',
  'clearInterval',
  'setImmediate',
  'clearImmediate',
  'console',
  'module',
  'require',
  '_' ]
> this.eval
[Function: eval]
Run Code Online (Sandbox Code Playgroud)

this.eval来自哪里?

Ber*_*rgi 6

全局对象的内置属性是不可枚举的,因此Object.keys不会返回它们.你可以Object.getOwnPropertyNames改用.


c-s*_*ile 5

以下globals()函数将获取全局命名空间对象:

function globals() { return this; }
Run Code Online (Sandbox Code Playgroud)

有了它,您可以随时列出全局命名空间的所有变量:

function varsList() {
  return Object.getOwnPropertyNames(globals());
}
Run Code Online (Sandbox Code Playgroud)

  • 那么在严格模式下呢?;-) (2认同)