Symbol

是js中继Number String Boolean Undefined Object Function之后推出的第七种数据类型 Symbol

Symbol生成唯一的值 为了防止命名冲突

构造

Symbol(str) str为了标识我们生成唯一值 可以省略

const students = {
    wx : "钻一",
    //利用计算属性 生成属性名 防止冲突
    [Symbol("lyy")] : "最强王者",
    [Symbol("fk")] : "白金",
    [Symbol("tt")] : "黑铁",
}

特点

对象属性遍历

用symbol生成的对象属性 ,使用for inObject.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")]) //最强王者