From 0436d71e7cedeb955f4b557f991f4c3498a9b716 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Thu, 19 Aug 2021 03:12:34 +0700 Subject: [PATCH] add a workaround of a specific case of broken `Object.prototype`, close #973 --- CHANGELOG.md | 2 +- packages/core-js-pure/override/internals/export.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ae4bffcf1af..e3dc942cf2a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog ##### Unreleased -- Nothing +- Added a workaround of a specific case of broken `Object.prototype`, [#973](https://github.com/zloirock/core-js/issues/973) ##### 3.16.2 - 2021.08.17 - Added a workaround of a Closure Compiler unsafe optimization, [#972](https://github.com/zloirock/core-js/issues/972) diff --git a/packages/core-js-pure/override/internals/export.js b/packages/core-js-pure/override/internals/export.js index 3369fea454db..cc6e57b52f65 100644 --- a/packages/core-js-pure/override/internals/export.js +++ b/packages/core-js-pure/override/internals/export.js @@ -43,7 +43,7 @@ module.exports = function (options, source) { var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype; - var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {}); + var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET]; var targetPrototype = target.prototype; var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE; @@ -80,7 +80,7 @@ module.exports = function (options, source) { createNonEnumerableProperty(resultProperty, 'sham', true); } - target[key] = resultProperty; + createNonEnumerableProperty(target, key, resultProperty); if (PROTO) { VIRTUAL_PROTOTYPE = TARGET + 'Prototype'; @@ -88,7 +88,7 @@ module.exports = function (options, source) { createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {}); } // export virtual prototype methods - path[VIRTUAL_PROTOTYPE][key] = sourceProperty; + createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty); // export real prototype methods if (options.real && targetPrototype && !targetPrototype[key]) { createNonEnumerableProperty(targetPrototype, key, sourceProperty);