UNPKG

1.68 kBJavaScriptView Raw
1'use strict';
2var global = require('../internals/global');
3var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
4var ArrayIterators = require('../modules/es.array.iterator');
5var wellKnownSymbol = require('../internals/well-known-symbol');
6
7var ITERATOR = wellKnownSymbol('iterator');
8var Uint8Array = global.Uint8Array;
9var arrayValues = ArrayIterators.values;
10var arrayKeys = ArrayIterators.keys;
11var arrayEntries = ArrayIterators.entries;
12var aTypedArray = ArrayBufferViewCore.aTypedArray;
13var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
14var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];
15
16var CORRECT_ITER_NAME = !!nativeTypedArrayIterator
17 && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);
18
19var typedArrayValues = function values() {
20 return arrayValues.call(aTypedArray(this));
21};
22
23// `%TypedArray%.prototype.entries` method
24// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries
25exportTypedArrayMethod('entries', function entries() {
26 return arrayEntries.call(aTypedArray(this));
27});
28// `%TypedArray%.prototype.keys` method
29// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys
30exportTypedArrayMethod('keys', function keys() {
31 return arrayKeys.call(aTypedArray(this));
32});
33// `%TypedArray%.prototype.values` method
34// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values
35exportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);
36// `%TypedArray%.prototype[@@iterator]` method
37// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator
38exportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);