根据某个符号名称(符号描述)能够得到同一个符号
const obj2 = (() => {
const s = Symbol('sd')
return {
a: 1,
b: 2,
[s]: 123,
}
})()
共享符号语法
Symbol.for("符号名/符号描述") //获取共享符号
将最上面的普通符号修改为共享符号代码如下
const obj = (() => {
const s = Symbol.for('sd')
return {
a: 1,
b: 2,
[s]: 123,
}
})()
其实现原理
const SymbolFor = (() => {
const global = {};//用于记录有哪些共享符号
return function (name) {
console.log(global)
if (!global[name]) {
global[name] = Symbol(name);
}
console.log(global);
return global[name];
}
})();
const syb1 = SymbolFor("abc");
const syb2 = SymbolFor("abc");
console.log(syb1 === syb2);