123456789101112131415161718192021222324252627282930313233 |
- "use strict";
-
- var setPrototypeOf = require("es5-ext/object/set-prototype-of")
- , contains = require("es5-ext/string/#/contains")
- , d = require("d")
- , Symbol = require("es6-symbol")
- , Iterator = require("./");
-
- var defineProperty = Object.defineProperty, ArrayIterator;
-
- ArrayIterator = module.exports = function (arr, kind) {
- if (!(this instanceof ArrayIterator)) throw new TypeError("Constructor requires 'new'");
- Iterator.call(this, arr);
- if (!kind) kind = "value";
- else if (contains.call(kind, "key+value")) kind = "key+value";
- else if (contains.call(kind, "key")) kind = "key";
- else kind = "value";
- defineProperty(this, "__kind__", d("", kind));
- };
- if (setPrototypeOf) setPrototypeOf(ArrayIterator, Iterator);
-
- // Internal %ArrayIteratorPrototype% doesn't expose its constructor
- delete ArrayIterator.prototype.constructor;
-
- ArrayIterator.prototype = Object.create(Iterator.prototype, {
- _resolve: d(function (i) {
- if (this.__kind__ === "value") return this.__list__[i];
- if (this.__kind__ === "key+value") return [i, this.__list__[i]];
- return i;
- })
- });
- defineProperty(ArrayIterator.prototype, Symbol.toStringTag, d("c", "Array Iterator"));
|