一、Symbol数据类型的初衷:为了解决对象中属性名冲突的问题
let a = Symbol('a')
let obj = {
a: 1,
b: 2,
[a]: 3,
}
console.log(obj);
console.log(obj.a);
console.log(obj[a]);
二、Symbol声明的变量是唯一的,是独一无二的
let sy = Symbol()
console.log(typeof sy)
let sy2 = Symbol('a')
let sy3 = Symbol('a')
console.log(sy2 == sy3)
三、与Symbol数据类型相关的几种方法(函数)
1、Object.getOwnPropertySymbols() 只能获取symbol类型
2、Reflect.ownKeys() 能够获取对象中所有的属性名
3、Symbol.for() 根据参数名,去全局环境中搜索是否有以该symbol.for()参数为名的symbol值,如果有就返回它,没有就以该参数名来创建一个新的symbol值。
let a_1 = Symbol.for('b')
let a_2 = Symbol.for('b')
console.log(a_1 == a_2);
4、Symbol.keyFor() 返回一个以被登记在全局环境中的symbol.for()值的key,没有就返回undefined。