| | |
| | | var isCallable = require('../internals/is-callable'); |
| | | var create = require('../internals/object-create'); |
| | | var getPrototypeOf = require('../internals/object-get-prototype-of'); |
| | | var redefine = require('../internals/redefine'); |
| | | var defineBuiltIn = require('../internals/define-built-in'); |
| | | var wellKnownSymbol = require('../internals/well-known-symbol'); |
| | | var IS_PURE = require('../internals/is-pure'); |
| | | |
| | |
| | | // https://tc39.es/ecma262/#sec-%iteratorprototype%-object |
| | | var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; |
| | | |
| | | /* eslint-disable es/no-array-prototype-keys -- safe */ |
| | | /* eslint-disable es-x/no-array-prototype-keys -- safe */ |
| | | if ([].keys) { |
| | | arrayIterator = [].keys(); |
| | | // Safari 8 has buggy iterators w/o `next` |
| | |
| | | // `%IteratorPrototype%[@@iterator]()` method |
| | | // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator |
| | | if (!isCallable(IteratorPrototype[ITERATOR])) { |
| | | redefine(IteratorPrototype, ITERATOR, function () { |
| | | defineBuiltIn(IteratorPrototype, ITERATOR, function () { |
| | | return this; |
| | | }); |
| | | } |