一、描述
Symbols是JavaScript在es6版本新引入的一种基本数据类型,其中每个从Symbol()返回的symbol值都是唯一的。
二、基本用法
- 给user对象添加一个唯一的key
const id = Symbol('id')
let user = {
value: '999',
id: '001',
[id]: 1001
}
console.log(user) // {value: "999", id: 1, Symbol(id): 1001}
console.log(user[id]) // 1001
symbol的值不能重复,但是可以修改
// 接上之前的代码
user[id] = 2002
console.log(user[id]) // 2002
三、Symbol 注册表
- Symbol()在每次使用时返回的symbol值都是唯一的
- Symbol.for() 方法创建的的 symbol 会被放入一个全局 symbol 注册表中
- Symbol.keyFor()需传入一个Symbol对象,返回该对象的全局注册的Symbol值
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false
const sym = Symbol.for("mario")
Symbol.keyFor(sym) // mario
const id = Symbol('id')
Symbol.keyFor(id) // undefined