Open nmsn opened 1 year ago
Symbol 是 ES6 新出的一种基础数据类型, 使用 Symbol([description])
而不是 new Symbol([description])
来生成唯一的 symbol
值。一个 symbol
值能作为对象属性的标识符;这是该数据类型仅有的目的。
symbol
值Symbol("foo") === Symbol("foo"); // false
给对象定义 symbol 类型的属性
let obj = {
abc: 123,
"hello": "world"
}
obj["abc"] // 123
obj["hello"] // 'world'
而现在,Symbol可同样用于对象属性的定义和访问:
const PROP_NAME = Symbol()
const PROP_AGE = Symbol()
let obj = {
[PROP_NAME]: "一斤代码"
}
obj[PROP_AGE] = 18
obj[PROP_NAME] // '一斤代码'
obj[PROP_AGE] // 18
// 使用Object的API
Object.getOwnPropertySymbols(obj) // [Symbol(name)]
// 使用新增的反射API
Reflect.ownKeys(obj) // [Symbol(name), 'age', 'title']
如题