如何在JavaScript ES6中实现符号?



我最近学习了JavaScript ES6中的Symbols,我非常好奇它是如何在底层实现的。

具体来说,我很好奇符号是如何实现唯一性的:

a = Symbol('key')
b = Symbol('key')
a !== b // true

还可以实现其for功能:

a = Symbol.for('key')
b = Symbol.for('key')
a === b // true

有人能解释一下这是如何实现的吗?

我阅读了MDN文档,但它主要描述了接口,而不是实现。

我很好奇符号是如何实现唯一性的

就像对象一样:当你创建一个新的实例时,它有自己的标识。

有没有人能透露一下for是如何在引擎盖下实现的?

它基本上是一个Map,通过名称缓存创建的符号。它叫做全局符号注册表。

最新更新