You can not 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
46 lines
1.8 KiB
'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);
|
|
|