【发布时间】:2021-05-04 22:08:41
【问题描述】:
我正在寻找一种以编程方式获取浏览器全局变量列表的方法,包括诸如Array、Object 等内置构造函数。
如果我在 Chrome 控制台中输入 Javascript,我会得到这个有点奇怪的行为:
console.log('Array' in globalThis); // true
const s = new Set(function*() { for (const key in globalThis) yield key; }());
console.log(s.has('Array')); // false
也就是说,我可以检查 Array 构造函数是否在全局对象中,但是当我枚举其成员时,Array 构造函数不存在。
我的问题:
-
为什么我的枚举键方法不起作用?
-
是否有一种编程和跨浏览器的方式(只有常青浏览器才可以)枚举通过
globalThis访问的每个成员? -
如果做不到这一点,是否有特定于浏览器的编程方式来实现这一点?
【问题讨论】:
-
对象的属性不必是可枚举的。
标签: javascript browser global-variables introspection