我想要发现存在于当前JavaScript环境中的所有全局变量,无论该环境是浏览器、Node.js、Deno等。
我曾尝试枚举globalThis
和window
对象的属性,但它们并不能揭示所有内容。
例如,在浏览器(Chrome v83)中,记录Object.keys('window')
不会产生DOMParser
或XMLSerializer
接口,但我可以实例化一个new DOMParser()
。
在环境中,我如何以编程方式获得所有全局变量的列表,而不需要引用某种外部文档?
发布于 2020-05-21 02:06:47
As @Barmar pointed out,为了查看所有内容,还必须包括non-enumerable properties:
const caseInsensitiveSort = (a, b) => {
const lowerA = a.toLowerCase();
const lowerB = b.toLowerCase();
if (lowerA < lowerB) return -1;
if (lowerA > lowerB) return 1;
return 0;
};
const sortedGlobals = [...Object.getOwnPropertyNames(globalThis)].sort(caseInsensitiveSort);
console.log(sortedGlobals);
https://stackoverflow.com/questions/61925611
复制