ES5中的基本数据:null undefined number boollean string
ES6新增的基本数据:Symbol
1.基本用法
let sy1 = Symbol("KK");
let sy2 = Symbol("KK");
console.log(sy1,sy2,sy1==sy2); // Symbol(KK) Symbol(KK) false
typeof(sy); // "symbol"
表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
2.使用场景
作为属性名
用法
由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。
注意点
Symbol 值作为属性名时,该属性是公有属性不是私有属性,可以在类的外部访问。但是不会出现在 for...in 、 for...of 的循环中,也不会被 Object.keys() 、 Object.getOwnPropertyNames() 返回。如果要读取到一个对象的 Symbol 属性,可以通过 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到。