Symbol
- Symbol()函数返回一个类型符号的值,具有暴露内置对象的几个成员的静态属性,具有公开全局符号注册表的静态方法,并且类似于内置对象类,但作为构造函数不完整,因为 它不支持“new Symbol()”语法。
- 从Symbol()返回的每个符号值都是唯一的。 符号值可以用作对象属性的标识符; 这是数据类型的唯一目的。 关于目的和用法的进一步解释可以在Symbol的词汇表中找到。
- symbol 是原始数据类型
1 | // JavaScript Demo: Symbol - Constructor |
语法
1 | Symbol([description]) |
参数
description 可选
- 可选,字符串。 描述可用于调试但不访问符号本身的符号。
说明
- 要创建一个新的原始符号,可以使用可选字符串作为其描述来编写Symbol()
1 | var sym1 = Symbol(); |
- 上面的代码创建了三个新的符号。 请注意,Symbol(“foo”)不会将字符串“foo”强制转换为符号。 它每次都会创建一个新符号:
1 | Symbol('foo') === Symbol('foo'); // false |
- 新运算符的以下语法将引发TypeError:
1 | var sym = new Symbol(); // TypeError |
- 这可以防止作者创建一个显式的Symbol包装器对象而不是新的符号值,并且可能会令人惊讶,因为通常可以在原始数据类型周围创建显式包装器对象(例如,new Boolean,new String和New Number)。
- 如果你真的想创建一个Symbol包装器对象,你可以使用Object()函数:
1 | var sym = Symbol('foo'); |