将符号引入Javascript的最初动机是启用 私有 属性。
不幸的是,它们最终被严重降级。它们不再是私有的,因为您可以通过反射找到它们,例如使用
Object.getOwnPropertySymbols或代理。
它们现在被称为 唯一
符号,它们的唯一用途是避免属性之间的名称冲突。例如,ECMAscript本身现在可以通过某些方法引入扩展钩子,您可以将其应用于对象(例如,定义其迭代协议),而不必冒与用户名冲突的风险。
是否足够强大,是否有动机在语言中添加符号尚有争议。

将符号引入Javascript的最初动机是启用 私有 属性。
不幸的是,它们最终被严重降级。它们不再是私有的,因为您可以通过反射找到它们,例如使用
Object.getOwnPropertySymbols或代理。
它们现在被称为 唯一
符号,它们的唯一用途是避免属性之间的名称冲突。例如,ECMAscript本身现在可以通过某些方法引入扩展钩子,您可以将其应用于对象(例如,定义其迭代协议),而不必冒与用户名冲突的风险。
是否足够强大,是否有动机在语言中添加符号尚有争议。