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