一、因对象属性名称造成的数据覆盖问题。
//Symbol是继javaScript之后推出的第七种数据类型。解决对象属性名重复冲突和问题。
const Person = {
'Lily':{grade:60,gender:'female'},
'Nina':{grade:80,gender:'female'},
'Nina':{grade:80,gender:'female'}
}
console.log(Person)
******
二、创建一个Symbol。
Symbol([description])
参数 description 是一个可选参数,是一个字符串,可以用于调试,但不能访问Symbol 自身。 每一个 Symbol() 返回的值都是唯一的。一个Symbol 值能作为对象属性的标识符,这是改数据类型仅有的目的。
console.log(Symbol('car') === Symbol('train')) //fasle
console.log(Symbol() === Symbol()) //fasle
const Person = {
[Symbol('Lily')]: { grade: 60, gender: 'female' },
[Symbol('Nina')]: { grade: 80, gender: 'female' },
[Symbol('Nina')]: { grade: 80, gender: 'female' }
}
console.log(Person)
******
四、Symbol与遍历。
console.log(Object.getOwnPropertyNames(Person))
console.log(Object.keys(Person))
for (let per in Person) {
console.log(per)
}
******
//ES6中为Symbol提供的遍历方法
const syms = Object.getOwnPropertySymbols(Person).map(sym => Person[sym])
console.log(syms)
******
详情:https://www.jianshu.com/p/425148370333?utm_source=oschina-app



