From 8021f70a2a4f96eba973aa190f6efe0e3a5f5489 Mon Sep 17 00:00:00 2001 From: mhassan1 Date: Fri, 12 Jul 2024 10:51:09 -0400 Subject: [PATCH] Improve legacy iterators check --- polyfills/Array/prototype/values/polyfill.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/polyfills/Array/prototype/values/polyfill.js b/polyfills/Array/prototype/values/polyfill.js index b0704376..efdd8fdd 100644 --- a/polyfills/Array/prototype/values/polyfill.js +++ b/polyfills/Array/prototype/values/polyfill.js @@ -1,16 +1,16 @@ /* global CreateMethodProperty, Symbol, ToObject, ArrayIterator */ // 22.1.3.30/ Array.prototype.values ( ) -var hasLegacyIterator = !(function () { +var hasModernIterator = function () { // firefox 44 and below uses legacy iterators // https://github.com/zloirock/core-js/commit/bb3b34bbf92b1d1a7b50d3a5a445c84dc2fb5cd5#diff-25d2a16dc5a355ce40a572773be144d1c8e085a809633e42ec$ var IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())); var test = {}; return IteratorPrototype[Symbol.iterator].call(test) === test; -})(); +} // Firefox, Chrome and Opera have Array.prototype[Symbol.iterator], which is the exact same function as Array.prototype.values. -if ('Symbol' in self && 'iterator' in Symbol && typeof Array.prototype[Symbol.iterator] === 'function' && !hasLegacyIterator) { +if ('Symbol' in self && 'iterator' in Symbol && typeof Array.prototype[Symbol.iterator] === 'function' && hasModernIterator()) { CreateMethodProperty(Array.prototype, 'values', Array.prototype[Symbol.iterator]); } else { CreateMethodProperty(Array.prototype, 'values', function values () {