ECMAScript -17 Symbol
Symbol: 用来表示独一无二的值
const s = Symbol()
console.info(s) // >>> Symbol()
console.info(typeof s) // >>> symbol
console.info(
Symbol() === Symbol() // 永远不会相等
)
console.info(
Symbol('a') === Symbol('a') // 永远不会相等
)
console.info(Symbol('bar')) // >> Symbol(bar)
console.info(Symbol('baz')) // >> Symbol(baz)
console.info(Symbol('foo')) // >> Symbol(foo)
const obj1 = {}
obj[Symbol()] = '123'
obj[Symbol()] = '456'
console.info(obj1) /// >>> { [Symbol()]: '123', [Symbol()]: '456' }
const obj2 = {
[Symbol()]: '123',
[Symbol()]: '456'
}
console.info(obj2) // >>> { [Symbol()]: '123', [Symbol()]: '456' }
应用
- 私有成员,使用Symbol创建私有成员的属性名
// a.js ----------------------------
const name = Symbol()
const person = {
[name]: 'tom',
say() {
console.info(this[name])
},
getName() {
return this[name]
}
}
/**
* person:
* getName: function(),
* say: function(),
* Symbol(): "tom"
*/
// 外部文件 b.js ----------------------------
console.info(person.getName()) // tom
person.say() // tom

Keep learning

浙公网安备 33010602011771号