symbol类型 唯一值 let a:symbol = Symbol('s') //可以跟数值类型可以跟字符串类型 let a1:symbol = Symbol('s') // a1和a结果内存地址是不同的
let a:symbol = Symbol.for('x') let a1:symbol = Symbol.for('x') 这样a和a1内存地址是相同的
使用场景:用作对象的属性 let a1:symbol = Symbol(1) let a2:symbol = Symbol(1) let obj = { name: 'zs', [a1]: 111 } console.log(obj)
for(let key in obj) { console.log(key) } for in 中会失效,打印不出key
console.log(Object.keys(obj)) Object.keys也读不到
console.log(Object.getOwnPropertySymbols(obj)) 可以取到,但是只能取到symbol
同时取出来 console.log(Reflect.ownKeys(obj))