Array.prototype.slice.call()-like method for TypedArrays, Buffers and Arguments
npm install generic-slicegeneric-slice
=============
A poly fill for slice that uniformly and efficiently implements Array-like semantics for the following classses of objects:
* Typed Arrays
* Node.JS-style Buffers()
* Regular JS Arrays
* Arguments
* Any other array-like object (ie has a length and array accessors)
npm install generic-slice
``javascript
var slice = require("generic-slice")
var x = new Float32Array(4)
x[0] = 1
x[1] = 2
x[2] = 3
x[3] = 4
var y = slice(x, 0, 2)
// Now:
// y = [ 1, 2 ]
// x = [ 1, 2, 3, 4 ]
y[0] = 1000
// Now:
// y = [ 1000, 2 ]
// x = [ 1, 2, 3, 4 ]
`
* array is a typed array, buffer, Array, or Arguments objectsliceBegin
* is an optional argument giving the start of the slice. Negative values change counting to end of array. (Default: 0)sliceEnd
* is an optional argument giving the end of the slice. Negative values wrap around. (Default: array.length)
Returns A copy of the array from the range [sliceBegin, sliceEnd)
* slice got dropped from the typed array specification (and the replacement method, .subarray() merely returns a view and does not make a copy)Buffer
* Node.JS's 's slice method does not make a copy like Array's slice does, and so it has inconsistent semantics.Arguments
* doesn't have a slice method eitherArray.prototype.slice.call
* Using doesn't properly preserve the types of things like Buffers or typed arraysArray.prototype.slice.call` can be slower than an appropriate implementation. For example, to clone a typed array you can slice the underlying ArrayBuffer assuming that you are careful about how you perform indexing.
* Also
All of the major edge cases should be tested. If you find a bug, please open an issue or send a pull request.