UNPKG

1.31 kBJavaScriptView Raw
1'use strict';
2// https://github.com/tc39/proposal-iterator-helpers
3var $ = require('../internals/export');
4var global = require('../internals/global');
5var anInstance = require('../internals/an-instance');
6var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
7var has = require('../internals/has');
8var wellKnownSymbol = require('../internals/well-known-symbol');
9var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
10var IS_PURE = require('../internals/is-pure');
11
12var ITERATOR = wellKnownSymbol('iterator');
13var TO_STRING_TAG = wellKnownSymbol('toStringTag');
14
15var NativeIterator = global.Iterator;
16
17// FF56- have non-standard global helper `Iterator`
18var FORCED = IS_PURE || typeof NativeIterator != 'function' || NativeIterator.prototype !== IteratorPrototype;
19
20var IteratorConstructor = function Iterator() {
21 anInstance(this, IteratorConstructor);
22};
23
24if (IS_PURE) {
25 IteratorPrototype = {};
26 createNonEnumerableProperty(IteratorPrototype, ITERATOR, function () {
27 return this;
28 });
29}
30
31if (!has(IteratorPrototype, TO_STRING_TAG)) {
32 createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator');
33}
34
35IteratorConstructor.prototype = IteratorPrototype;
36
37$({ global: true, forced: FORCED }, {
38 Iterator: IteratorConstructor
39});