Symbol是ES6的一个新类型,用通俗易懂的话来说,就是独一无二的值。如
const a1 = Symbol(“name”)
const a2 = Symbol(“name”)
console.log(a1 === a2) // false
虽然都是生存一个叫做name的独一无二的值,但是两个值是不一样的,那这个跟之前直接定义的
const a1 = “name”
有什么区别呢?
一、消除直接的 == 比较
一般我们写代码都是
if(name == "Tom"){
xxxx
}else if(name == "Laly"){
xxxx
}
但是这种代码很不雅观,也很难维护,此时就可以用Symbol变量了
const nameList = {
Tom: Symbol(),
Laly: Symbol()
}
if(name == nameList.Tom){
xxxx
}else if (name == nameList.Laly){
xxxx
}
这样就清晰明了了
二、消除一个对象有多个属性时候覆盖的问题
当一个对象有很多个属性的时候,太多人开发的时候就可能会被覆盖,那么就可以用Symbol优化
const name = Symbol("name")
const age = Symbol("age")
const obj = {
[name]: "张三",
[age]: "14"
}