heyujie
2021-05-20 6ebdefb4a5b2be82a8c452c0bb4624f3d85a17b7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"use strict";
 
var d              = require("d")
  , validateSymbol = require("../../../validate-symbol");
 
var registry = Object.create(null);
 
module.exports = function (SymbolPolyfill) {
    return Object.defineProperties(SymbolPolyfill, {
        for: d(function (key) {
            if (registry[key]) return registry[key];
            return (registry[key] = SymbolPolyfill(String(key)));
        }),
        keyFor: d(function (symbol) {
            var key;
            validateSymbol(symbol);
            for (key in registry) {
                if (registry[key] === symbol) return key;
            }
            return undefined;
        })
    });
};