| 'use strict'; |
| var global = require('../internals/global'); |
| var ArrayBufferViewCore = require('../internals/array-buffer-view-core'); |
| var ArrayIterators = require('../modules/es.array.iterator'); |
| var wellKnownSymbol = require('../internals/well-known-symbol'); |
| |
| var ITERATOR = wellKnownSymbol('iterator'); |
| var Uint8Array = global.Uint8Array; |
| var arrayValues = ArrayIterators.values; |
| var arrayKeys = ArrayIterators.keys; |
| var arrayEntries = ArrayIterators.entries; |
| var aTypedArray = ArrayBufferViewCore.aTypedArray; |
| var exportProto = ArrayBufferViewCore.exportProto; |
| var nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR]; |
| |
| var CORRECT_ITER_NAME = !!nativeTypedArrayIterator |
| && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined); |
| |
| var typedArrayValues = function values() { |
| return arrayValues.call(aTypedArray(this)); |
| }; |
| |
| // `%TypedArray%.prototype.entries` method |
| // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.entries |
| exportProto('entries', function entries() { |
| return arrayEntries.call(aTypedArray(this)); |
| }); |
| // `%TypedArray%.prototype.keys` method |
| // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.keys |
| exportProto('keys', function keys() { |
| return arrayKeys.call(aTypedArray(this)); |
| }); |
| // `%TypedArray%.prototype.values` method |
| // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.values |
| exportProto('values', typedArrayValues, !CORRECT_ITER_NAME); |
| // `%TypedArray%.prototype[@@iterator]` method |
| // https://tc39.github.io/ecma262/#sec-%typedarray%.prototype-@@iterator |
| exportProto(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME); |