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