Software zum Installieren eines Smart-Mirror Frameworks , zum Nutzen von hochschulrelevanten Informationen, auf einem Raspberry-Pi.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

es.array.iterator.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. var toIndexedObject = require('../internals/to-indexed-object');
  3. var addToUnscopables = require('../internals/add-to-unscopables');
  4. var Iterators = require('../internals/iterators');
  5. var InternalStateModule = require('../internals/internal-state');
  6. var defineIterator = require('../internals/define-iterator');
  7. var ARRAY_ITERATOR = 'Array Iterator';
  8. var setInternalState = InternalStateModule.set;
  9. var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
  10. // `Array.prototype.entries` method
  11. // https://tc39.es/ecma262/#sec-array.prototype.entries
  12. // `Array.prototype.keys` method
  13. // https://tc39.es/ecma262/#sec-array.prototype.keys
  14. // `Array.prototype.values` method
  15. // https://tc39.es/ecma262/#sec-array.prototype.values
  16. // `Array.prototype[@@iterator]` method
  17. // https://tc39.es/ecma262/#sec-array.prototype-@@iterator
  18. // `CreateArrayIterator` internal method
  19. // https://tc39.es/ecma262/#sec-createarrayiterator
  20. module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
  21. setInternalState(this, {
  22. type: ARRAY_ITERATOR,
  23. target: toIndexedObject(iterated), // target
  24. index: 0, // next index
  25. kind: kind // kind
  26. });
  27. // `%ArrayIteratorPrototype%.next` method
  28. // https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
  29. }, function () {
  30. var state = getInternalState(this);
  31. var target = state.target;
  32. var kind = state.kind;
  33. var index = state.index++;
  34. if (!target || index >= target.length) {
  35. state.target = undefined;
  36. return { value: undefined, done: true };
  37. }
  38. if (kind == 'keys') return { value: index, done: false };
  39. if (kind == 'values') return { value: target[index], done: false };
  40. return { value: [index, target[index]], done: false };
  41. }, 'values');
  42. // argumentsList[@@iterator] is %ArrayProto_values%
  43. // https://tc39.es/ecma262/#sec-createunmappedargumentsobject
  44. // https://tc39.es/ecma262/#sec-createmappedargumentsobject
  45. Iterators.Arguments = Iterators.Array;
  46. // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
  47. addToUnscopables('keys');
  48. addToUnscopables('values');
  49. addToUnscopables('entries');