1.原始数据类型,表示独一无二(内存地址不同)的值,不能new
const name = Symbol('name');
const name2 = Symbol('name');
console.log(name === name2); //false
2.在对象中的应用,定义对象的私有变量
//Symbol类型 用来定义对象的私有变量
let s1 = Symbol();
console.log(s1);
let obj = {
a: 1,
[s1]: "hattie" //[s1] 为Symbol类型的变量s1
};
console.log(obj[s1]); //取值时一定用[变量名]
for (let key in obj) {
console.log(key); //a Symbol类型的属性不能被遍历出来
}
console.log(Object.keys(obj)); //["a"]
//获取Symbol类型的属性
console.log(Object.getOwnPropertySymbols(obj)); //[Symbol()]
console.log(Reflect.ownKeys(obj)); //["a", Symbol()]