有时但愿在函数外或不一样的文件能访问Symbol,上一章讲了getOwnPropertySymbols能访问,如今有更简洁的方式,能用共享符号访问同一个符号。函数
根据某个符号名称(符号描述)可以获得同一个符号。code
只要符号名或者符号描述是一致的,那就是同一个符号。get
Symbol.for("符号名/符号描述") // 获取共享符号
const syb1 = Symbol.for("abc"); const syb2 = Symbol.for("abc"); console.log(syb1 === syb2); // true
当咱们某些时候想让人家访问,但又必须是符号,就能够用共享符号。io
// 获取共享符号 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