Javascript 在浏览器中获取所有现有内置变量的综合列表

Javascript 在浏览器中获取所有现有内置变量的综合列表,javascript,variables,browser,Javascript,Variables,Browser,我想让用户在不覆盖现有变量的情况下定义某些变量。例如,允许的新变量: myJSON=123 一个无效的: JSON=123 因为它覆盖了现有的JSON对象。在添加之前,我可以简单地检查变量是否与未定义的不同。但是我更愿意向用户展示哪些变量已经被采用了 如何获得浏览器内置变量的全面列表? 请注意Object.keys(窗口)和Object.keys(文档)不包含JSON。我还应该检查哪些地方才能得到一个完整的变量列表?因此,最初,我认为限制是只枚举对象自身的属性,而不枚举继承的属性。然而,尝试一个

我想让用户在不覆盖现有变量的情况下定义某些变量。例如,允许的新变量:

myJSON=123

一个无效的:

JSON=123

因为它覆盖了现有的
JSON
对象。在添加之前,我可以简单地检查变量是否与未定义的
不同。但是我更愿意向用户展示哪些变量已经被采用了

如何获得浏览器内置变量的全面列表?


请注意
Object.keys(窗口)
Object.keys(文档)
不包含
JSON
。我还应该检查哪些地方才能得到一个完整的变量列表?

因此,最初,我认为限制是只枚举对象自身的属性,而不枚举继承的属性。然而,尝试一个没有a的简单方法并不能产生比
Object.keys
多得多的结果。我也试着绕过去,但没有结果

进一步的研究表明,
JSON
是这个家族的一部分。在研究这个问题时,我想到了如何列出节点中的所有标准内置对象,解决方案是利用。事实证明,这是解决办法,而不是得到解决≈300个结果,我得到了1000+,其中有
“JSON”
“Error”

const allWindowProperties=Object.getOwnPropertyNames(窗口);
console.log(所有窗口属性);
log(allWindowProperties.includes('JSON'));

log(allWindowProperties.includes('Error'))input
数据已经共享,但我也想共享新的变量。但是,不应覆盖内置内容!如果你想知道更多,看看。