Symbol一种新的原始数据类型Symbol,表示独一无二
const s1 = Symbol('aa')
const s2 = Symbol('aa')
console.log(s1); // Symbol(aa)
console.log(s2); // Symbol(aa)
console.log(s1 == s2);// false
const s3 = Symbol.for('aa') // 声明全新的
const s4 = Symbol.for('aa') // 把之前的声明拿过来用
console.log(s3); // Symbol(aa)
console.log(s4); // Symbol(aa)
console.log(s1 == s3);// false
console.log(s3 == s4);// true
// Symbol属性默认不能枚举
let obj = {
name: 'ccc',
age: 111,
[s1]: 'ok',
[s3]: 'ok2',
}
// [s1]: 'ok' 这个枚举不出来
for (let key in obj) {
console.log(obj[key]); // 'ccc' 111
}
// 获取所有的symbol
console.log(Object.getOwnPropertySymbols(obj)); // [ Symbol(aa), Symbol(aa) ]
// 获取普通类型的key
console.log(Object.keys(obj)); // [ 'name', 'age' ]