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'))这是一个有趣的问题。不过,我想知道这个用例是如何表现出来的——为什么有必要允许用户直接访问运行时环境来声明变量,更不用说在全局名称空间中了?@AlexanderNied感谢您的提问。我故意把这个问题概括起来,使它更容易阅读。我目前面临的需要是让任何用户将所有内容(输入、光标位置、变量等)共享给连接到同一页面的任何其他用户。就像谷歌的网页文档。目前,input
数据已经共享,但我也想共享新的变量。但是,不应覆盖内置内容!如果你想知道更多,看看。