| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | 'use strict';var toIndexedObject = require('../internals/to-indexed-object');var addToUnscopables = require('../internals/add-to-unscopables');var Iterators = require('../internals/iterators');var InternalStateModule = require('../internals/internal-state');var defineProperty = require('../internals/object-define-property').f;var defineIterator = require('../internals/iterator-define');var createIterResultObject = require('../internals/create-iter-result-object');var IS_PURE = require('../internals/is-pure');var DESCRIPTORS = require('../internals/descriptors');var ARRAY_ITERATOR = 'Array Iterator';var setInternalState = InternalStateModule.set;var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);// `Array.prototype.entries` method// https://tc39.es/ecma262/#sec-array.prototype.entries// `Array.prototype.keys` method// https://tc39.es/ecma262/#sec-array.prototype.keys// `Array.prototype.values` method// https://tc39.es/ecma262/#sec-array.prototype.values// `Array.prototype[@@iterator]` method// https://tc39.es/ecma262/#sec-array.prototype-@@iterator// `CreateArrayIterator` internal method// https://tc39.es/ecma262/#sec-createarrayiteratormodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {  setInternalState(this, {    type: ARRAY_ITERATOR,    target: toIndexedObject(iterated), // target    index: 0,                          // next index    kind: kind                         // kind  });// `%ArrayIteratorPrototype%.next` method// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next}, function () {  var state = getInternalState(this);  var target = state.target;  var index = state.index++;  if (!target || index >= target.length) {    state.target = null;    return createIterResultObject(undefined, true);  }  switch (state.kind) {    case 'keys': return createIterResultObject(index, false);    case 'values': return createIterResultObject(target[index], false);  } return createIterResultObject([index, target[index]], false);}, 'values');// argumentsList[@@iterator] is %ArrayProto_values%// https://tc39.es/ecma262/#sec-createunmappedargumentsobject// https://tc39.es/ecma262/#sec-createmappedargumentsobjectvar values = Iterators.Arguments = Iterators.Array;// https://tc39.es/ecma262/#sec-array.prototype-@@unscopablesaddToUnscopables('keys');addToUnscopables('values');addToUnscopables('entries');// V8 ~ Chrome 45- bugif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {  defineProperty(values, 'name', { value: 'values' });} catch (error) { /* empty */ }
 |