symbol(符号)是原始值,且符号的实例是唯一,不可变的。
它的创建方式有些特别,他是原始类型,创建时不需要new,而是用Symbol函数初始化
var s1=Symbol()
var s2=Symbol()
console.log(s1==s2)//false 由于符号类型的值是唯一的 所以是false
var s3=Symbol("peo")
var s4=Symbol("peo")
console.log(s3==s4)//false Symbol函数的参数只是类似于注释描述符号类型,并没有实际的用处
全局注册符号:如果想在不同的地方使用同一个符号可以使用Symbol.for()方法来创建符号,这时候符号描述就有用了
var s5=Symbol.for("peo")
var s6=Symbol.for("peo")
console.log(s5==s6)//true 使用相同描述的符号类型
console.log(s5==s4)//false 使用相同描述的符号类型但是s4创建没有用Symbol.for()
console.log(s5==s2)//false 使用不同符号类型
使用符号作为属性:
var p1=Symbol(),p2=Symbol(),p3=Symbol()
var people={
p1:"chinese",
p2:"German",
p3:"koreans"
}
for (const key in people) {
console.log(people[key])// chinese German koreans p1、p2、p3各自表示唯一的属性值
}
//如果当符号的值作为对象的属性的时候 比如[p1]:"chinese" 这样该属性不能被遍历出来