Symbol
是js中继Number
String
Boolean
Undefined
Object
Function
之后推出的第七种数据类型 Symbol
Symbol生成唯一的值 为了防止命名冲突
构造
Symbol(str)
str为了标识我们生成唯一值 可以省略
const students = {
wx : "钻一",
//利用计算属性 生成属性名 防止冲突
[Symbol("lyy")] : "最强王者",
[Symbol("fk")] : "白金",
[Symbol("tt")] : "黑铁",
}
特点
对象属性遍历
用symbol生成的对象属性 ,使用for in
、 Object.getOwnPropertyNames()
、 Object.keys()
无法遍历获取,只能使用Object.getOwnPropertySymbols()
获取属性
for (const key in students) {
console.log(key)
}
//wx
console.log(Object.keys(students)) //["wx"]
console.log(Object.getOwnPropertyNames(students)) //["wx"]
console.log(Object.getOwnPropertySymbols(students)) // [Symbol(lyy), Symbol(fk), Symbol(tt)]
Symbol.for()
Symbol.for(str)查找其它用Symbol.for(str)生成的唯一值,如果存在就用返回已存在的唯一值,不存在就生成新的唯一值
const students = {
[Symbol.for("lyy")] : "最强王者",
}
console.log(students[Symbol.for("lyy")]) //最强王者