利用场景

有时心愿在函数外或不同的文件能拜访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