21 lines
846 B
JavaScript
21 lines
846 B
JavaScript
var global = require('../internals/global');
|
|
var shared = require('../internals/shared');
|
|
var has = require('../internals/has');
|
|
var uid = require('../internals/uid');
|
|
var NATIVE_SYMBOL = require('../internals/native-symbol');
|
|
var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
|
|
|
|
var WellKnownSymbolsStore = shared('wks');
|
|
var Symbol = global.Symbol;
|
|
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
|
|
|
|
module.exports = function (name) {
|
|
if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
|
|
if (NATIVE_SYMBOL && has(Symbol, name)) {
|
|
WellKnownSymbolsStore[name] = Symbol[name];
|
|
} else {
|
|
WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
|
|
}
|
|
} return WellKnownSymbolsStore[name];
|
|
};
|