Symbol Predicates S2
中文标题:符号谓词
提案概览
- 阶段: Stage 2
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案引入了两个新的谓词,Symbol.isRegistered 和 Symbol.isWellKnown,以根据符号是否已注册或是否为众所周知的符号来区分它们。它帮助库确定符号是否可以用作 WeakMap 键,或者它是否真正唯一。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
符号谓词提案
状态
阶段 2
负责人:Ashley Claymore, Jordan Harband
作者:Robin Ricard, Ashley Claymore, Jordan Harband
动机
一个引入区分符号的方法的提案。
本提案添加了以下谓词:
Symbol.isRegistered(symbol)Symbol.isWellKnown(symbol)
并非所有符号都是相同的,了解它们的更多信息可能很有用,特别是对于库来说。
根据用例的不同,知道一个符号是真正唯一的、可伪造的(已注册的)还是跨领域共享的(众所周知的),可能很重要。
例如,符号作为 WeakMap 键要求符号不能是已注册的。
使用场景
你可以在库中检测一个符号是否可以用作 WeakMap 键:
你还可以找出你是否被给予了一个真正唯一的符号:
描述
Symbol.isRegistered(value)
接受一个未知值作为唯一参数,返回一个布尔值:如果该符号是已注册的,则为 true,否则为 false。
Symbol.isWellKnown(value)
接受一个未知值作为唯一参数,返回一个布尔值:如果该符号是 ECMA262 和 ECMA402 定义的众所周知的符号之一,则为 true,否则为 false。
实现
请注意,下面两个谓词包不是 polyfill;但它们与当前的规范文本精确匹配,因此它们代表了本提案的有效实现。
Symbol.isRegistered(symbol): https://github.com/inspect-js/is-registered-symbolSymbol.isWellKnown(symbol): https://github.com/inspect-js/is-well-known-symbol
维护提案仓库
- 对
spec.emu进行你的更改(ecmarkup 使用 HTML 语法,但并不是 HTML,所以我强烈建议不要将其命名为 ".html") - 任何对规范进行有意义的更改的提交,都应运行
npm run build并提交生成的输出。 - 每当你更新
ecmarkup时,运行npm run build并提交来自该依赖项的任何更改。