全球符号注册表是否可以直接访问?

时间:2015-09-08 19:52:15

标签: javascript ecmascript-6

我们知道what the global symbol registry (GSR) is 它是全球性的,我可以使用Symbol.forSymbol.keyFor访问其数据。

window是全球性的,我可以使用其名称访问它。

GSR是否有类似的机制,还是私人全球注册机构?

1 个答案:

答案 0 :(得分:2)

window对象与GSR非常不同(当然,更少"全局")

不,GSR不表示为JS代码可访问的对象,具有键值对的属性(或者可能是Map)。如果您正在寻找它,则无法枚举。访问它的唯一方法是Symbol.forSymbol.keyFor,这足以暴露关系的双射属性。

这可能(阅读:我的猜测)是为了简化实施。 GSR需要弱处理符号引用,当使用它们的所有领域都被终止时,它们应该被垃圾收集。此外,访问它的多个域可能在不同的线程中运行,这增加了复杂性。直接将映射公开给代码可能会引入竞争条件(类似于WeakMap不可枚举的原因)。