1 var global = require('../internals/global');
2 var shared = require('../internals/shared');
3 var has = require('../internals/has');
4 var uid = require('../internals/uid');
5 var NATIVE_SYMBOL = require('../internals/native-symbol');
6 var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
8 var WellKnownSymbolsStore = shared('wks');
9 var Symbol = global.Symbol;
10 var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
12 module.exports = function (name) {
13 if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
14 if (NATIVE_SYMBOL && has(Symbol, name)) {
15 WellKnownSymbolsStore[name] = Symbol[name];
17 WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
19 } return WellKnownSymbolsStore[name];