Symbol
es6之後的第7種數據類型
當通過Sympol()創建的值得時候,無論內部值是什麼,都是不相等的
const s = Symbol('123');
const b = Symbol('123');
console.log(s === b); // false
const a = Symbol.for('123');
const c = Symbol.for('123');
console.log(a === c); // true
當通過Symbol.for()創建值得時候,會全局查看有沒有創建過該值,如果創建過會直接取這個已經被創建的值.
定義在類中並取值
const r = Symbol.for('aaa');
class ddd {
get [r]() {
console.log(123);
return '33333';
}
}
const dddObj = new ddd();
console.log(dddObj[r]); // 33333
console.log(Object.getOwnPropertySymbols(ddd.prototype)); // [ Symbol(aaa) ]
通過在類中定義 get [xx] () {}方法。
然後實例化該類yy,通過實例化對象 y[xx] 即可調用對應的方法。
或者
const r = Symbol.for('aaa');
const ddd = {
get [r]() {
console.log(123);
},
};
ddd[r];
最終其實就相當於將r作爲一個key加入到了對象中通過 對象.xx 或者 對象[xx]就可以取到值。