Symbol

64 阅读1分钟

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' ]

参考文章