我正在尝试列出所有全局变量,包括那些引用built-in objects的变量。
在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]
this.eval
来自哪里?
答案 0 :(得分:5)
以下globals()
函数将获取全局命名空间对象:
function globals() { return this; }
有了它,您可以随时列出全局命名空间的所有变量:
function varsList() {
return Object.getOwnPropertyNames(globals());
}
答案 1 :(得分:5)
全局对象的内置属性是不可枚举的,因此Object.keys
不会返回它们。您可以改为使用Object.getOwnPropertyNames
。
答案 2 :(得分:2)
您可以使用Object.getOwnPropertyNames(this)
如果不传递“ this”作为引用或对象所有者属性的参数,则getOwnPropertyNames()函数将不会返回任何内容。
回答有关评估来源的问题,请查看此链接。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval