Symbol基本使用
const s1 = Symbol()
const s2 = Symbol()
console.log(s1 === s2)
const s3 = Symbol("aaa")
console.log(s3.description)
const obj = {
[s1]: "abc",
[s2]: "cba"
}
obj[s3] = "nba"
const s4 = Symbol()
Object.defineProperty(obj, s4, {
enumerable: true,
configurable: true,
writable: true,
value: "mba"
})
console.log(obj[s1], obj[s2], obj[s3], obj[s4])
console.log(Object.keys(obj))
console.log(Object.getOwnPropertyNames(obj))
console.log(Object.getOwnPropertySymbols(obj))
const sKeys = Object.getOwnPropertySymbols(obj)
for (const sKey of sKeys) {
console.log(obj[sKey])
}
const sa = Symbol.for("aaa")
const sb = Symbol.for("aaa")
console.log(sa === sb)
const key = Symbol.keyFor(sa)
console.log(key)
const sc = Symbol.for(key)
console.log(sa === sc)