这里写目录标题
symbol是什么
symbol是es6新引入的原始类型,通过 Symbol 函数调用生成,由于生成的 symbol 值为原始类型,所以 不采用构造函数来生成对象,而是直接调用symbol函数来返回一个值,个人猜测返回的这个值很可能是堆的地址,只有这个值是唯一的;
symbol用来干什么
symbol函数最重要的特性就是它生成的值是唯一的,因为项目越来越大时,对象的属性名可能会重复,而symbol可以作为属性名,防止属性名冲突
let test1={
name:'张三',
[Symbol('age')]:'20'
}
let test2={
[Symbol('age')]:'18'
}
上面的两个对象就能用属性名相同的属性了
注意事项
- Symbol值不能与其他类型的值进行运算
- Symbol 值不可以和其他类型值进行混合运算,否则会报错
- Symbol 值如果想要作为属性名,那就不能再用点运算符,因为点运算符后面跟的总是字符串
- 在对象内部使用Symbol 值作为属性名的时候,必须要将值放在方括号中