| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- var $export = require('./_export');
- var $typed = require('./_typed');
- var buffer = require('./_typed-buffer');
- var anObject = require('./_an-object');
- var toAbsoluteIndex = require('./_to-absolute-index');
- var toLength = require('./_to-length');
- var isObject = require('./_is-object');
- var ArrayBuffer = require('./_global').ArrayBuffer;
- var speciesConstructor = require('./_species-constructor');
- var $ArrayBuffer = buffer.ArrayBuffer;
- var $DataView = buffer.DataView;
- var $isView = $typed.ABV && ArrayBuffer.isView;
- var $slice = $ArrayBuffer.prototype.slice;
- var VIEW = $typed.VIEW;
- var ARRAY_BUFFER = 'ArrayBuffer';
- $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });
- $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
- // 24.1.3.1 ArrayBuffer.isView(arg)
- isView: function isView(it) {
- return $isView && $isView(it) || isObject(it) && VIEW in it;
- }
- });
- $export($export.P + $export.U + $export.F * require('./_fails')(function () {
- return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
- }), ARRAY_BUFFER, {
- // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
- slice: function slice(start, end) {
- if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
- var len = anObject(this).byteLength;
- var first = toAbsoluteIndex(start, len);
- var fin = toAbsoluteIndex(end === undefined ? len : end, len);
- var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));
- var viewS = new $DataView(this);
- var viewT = new $DataView(result);
- var index = 0;
- while (first < fin) {
- viewT.setUint8(index++, viewS.getUint8(first++));
- } return result;
- }
- });
- require('./_set-species')(ARRAY_BUFFER);
|