Symbol() 构造函数
Symbol() 函数返回 Symbol 类型的原始值。
试一试
const symbol1 = Symbol();
const symbol2 = Symbol(42);
const symbol3 = Symbol("foo");
console.log(typeof symbol1);
// Expected output: "symbol"
console.log(symbol2 === 42);
// Expected output: false
console.log(symbol3.toString());
// Expected output: "Symbol(foo)"
console.log(Symbol("foo") === Symbol("foo"));
// Expected output: false
语法
js
Symbol()
Symbol(description)
参数
description可选-
一个字符串。符号的描述,可用于调试,但不能用于访问符号本身。
示例
创建 Symbol
要创建新的原始 Symbol,请使用 Symbol(),并可选择提供一个字符串作为其描述。
js
const sym1 = Symbol();
const sym2 = Symbol("foo");
const sym3 = Symbol("foo");
上面的代码创建了三个新的 Symbol。请注意,Symbol("foo") 并不会将字符串 "foo" 转换为 Symbol。它每次都会创建一个新的 Symbol。
js
Symbol("foo") === Symbol("foo"); // false
new Symbol()
js
const sym = new Symbol(); // TypeError
这可以防止开发者创建显式的 Symbol 包装对象,而不是新的 Symbol 值,并且可能令人惊讶,因为围绕原始数据类型创建显式包装对象通常是可能的(例如,new Boolean、new String 和 new Number)。
如果你确实想创建一个 Symbol 包装对象,可以使用 Object() 函数。
js
const sym = Symbol("foo");
const symObj = Object(sym);
typeof sym; // "symbol"
typeof symObj; // "object"
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-symbol-constructor |
浏览器兼容性
加载中…