我最近了解了JavaScript ES6中的符号,我非常好奇它是如何在幕后实现的。
具体来说,我很好奇符号是如何实现独特性的:
a = Symbol('key')
b = Symbol('key')
a !== b // true
但也可以实现其for
功能:
a = Symbol.for('key')
b = Symbol.for('key')
a === b // true
有人能解释一下这是如何在引擎盖下实现的吗?
我阅读了MDN文档,但它主要描述了接口,而不是实现。
我最近了解了JavaScript ES6中的符号,我非常好奇它是如何在幕后实现的。
具体来说,我很好奇符号是如何实现独特性的:
a = Symbol('key')
b = Symbol('key')
a !== b // true
但也可以实现其for
功能:
a = Symbol.for('key')
b = Symbol.for('key')
a === b // true
有人能解释一下这是如何在引擎盖下实现的吗?
我阅读了MDN文档,但它主要描述了接口,而不是实现。
1条答案
按热度按时间pinkon5k1#
我很好奇如何实现符号以实现唯一性
就像物体一样:当你创建一个新的示例时,它有它自己的identity。
有人能解释一下
for
是如何在幕后实现的吗?它基本上是一个
Map
,按照名称缓存创建的符号,它被称为global symbol registry。