利用场景
有时心愿在函数外或不同的文件能拜访 Symbol,上一章讲了 getOwnPropertySymbols 能拜访,当初有更简洁的形式,能用共享符号拜访同一个符号。
定义
依据某个符号名称(符号形容)可能失去同一个符号。
语法
只有符号名或者符号形容是统一的,那就是同一个符号。
Symbol.for("符号名 / 符号形容") // 获取共享符号
const syb1 = Symbol.for("abc");
const syb2 = Symbol.for("abc");
console.log(syb1 === syb2); // true
当咱们某些时候想让人家拜访,但又必须是符号,就能够用共享符号。
// 获取共享符号
const obj = {
a: 1,
b: 2,
[Symbol.for("c")]: 3
}
console.log(obj[Symbol.for("c")]); // 3
实现原理
/*
1. 有一个全局的变量 global,记录有哪些共享符号
2. 返回一个函数
*/
const SymbolFor = (() => {const global = {}; // 用于记录有哪些共享符号
console.log(global);
return function (name) {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); // true