diff --git a/packages/core-js/internals/make-built-in.js b/packages/core-js/internals/make-built-in.js index 91436ac33f3c..7cac202c7bb9 100644 --- a/packages/core-js/internals/make-built-in.js +++ b/packages/core-js/internals/make-built-in.js @@ -1,3 +1,4 @@ +var uncurryThis = require('../internals/function-uncurry-this'); var fails = require('../internals/fails'); var isCallable = require('../internals/is-callable'); var hasOwn = require('../internals/has-own-property'); @@ -8,8 +9,12 @@ var InternalStateModule = require('../internals/internal-state'); var enforceInternalState = InternalStateModule.enforce; var getInternalState = InternalStateModule.get; +var $String = String; // eslint-disable-next-line es/no-object-defineproperty -- safe var defineProperty = Object.defineProperty; +var stringSlice = uncurryThis(''.slice); +var replace = uncurryThis(''.replace); +var join = uncurryThis([].join); var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; @@ -18,8 +23,8 @@ var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { var TEMPLATE = String(String).split('String'); var makeBuiltIn = module.exports = function (value, name, options) { - if (String(name).slice(0, 7) === 'Symbol(') { - name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']'; + if (stringSlice($String(name), 0, 7) === 'Symbol(') { + name = '[' + replace($String(name), /^Symbol\(([^)]*)\)/, '$1') + ']'; } if (options && options.getter) name = 'get ' + name; if (options && options.setter) name = 'set ' + name; @@ -38,7 +43,7 @@ var makeBuiltIn = module.exports = function (value, name, options) { } catch (error) { /* empty */ } var state = enforceInternalState(value); if (!hasOwn(state, 'source')) { - state.source = TEMPLATE.join(typeof name == 'string' ? name : ''); + state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); } return value; };