You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.8 KiB
JavaScript
46 lines
1.8 KiB
JavaScript
7 years ago
|
'use strict';
|
||
|
var $export = require('./_export')
|
||
|
, $typed = require('./_typed')
|
||
|
, buffer = require('./_typed-buffer')
|
||
|
, anObject = require('./_an-object')
|
||
|
, toIndex = require('./_to-index')
|
||
|
, toLength = require('./_to-length')
|
||
|
, isObject = require('./_is-object')
|
||
|
, ArrayBuffer = require('./_global').ArrayBuffer
|
||
|
, speciesConstructor = require('./_species-constructor')
|
||
|
, $ArrayBuffer = buffer.ArrayBuffer
|
||
|
, $DataView = buffer.DataView
|
||
|
, $isView = $typed.ABV && ArrayBuffer.isView
|
||
|
, $slice = $ArrayBuffer.prototype.slice
|
||
|
, VIEW = $typed.VIEW
|
||
|
, 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
|
||
|
, first = toIndex(start, len)
|
||
|
, final = toIndex(end === undefined ? len : end, len)
|
||
|
, result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
|
||
|
, viewS = new $DataView(this)
|
||
|
, viewT = new $DataView(result)
|
||
|
, index = 0;
|
||
|
while(first < final){
|
||
|
viewT.setUint8(index++, viewS.getUint8(first++));
|
||
|
} return result;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
require('./_set-species')(ARRAY_BUFFER);
|