方法一:
TypedArray slice([begin[, end]])优点:没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题
缺点:不支持IE
var u8 = new Uint8Array([1,2,4,6]);
var u8New = u8.slice(0, 3);
console.log(u8New); // Uint8Array(3) [1, 2, 4]
console.log(u8New.buffer); // ArrayBuffer(3) {}方法二:
New TypedArray(typedArray.buffer[, byteOffset [, length]]) 优点:支持IE
缺点:截取出来的typedArray.buffer还是原始的ArrayBuffer
var u8 = new Uint8Array([1,2,4,6]);
var u8New = new Uint8Array(u8.buffer, 1, 3);
console.log(u8New); // Uint8Array(3) [2, 4, 6]
console.log(u8New.buffer); // ArrayBuffer(4) {}方法三:
typedarray.set(typedarray[, offset])优点:支持IE;没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题
var u8 = new Uint8Array([1,2,4,6]);
var u8Temp = new Uint8Array(u8.buffer, 0, 3);
var u8New = new Uint8Array(u8Temp.byteLength);
u8New.set(u8Temp);
console.log(u8New); // Uint8Array(3) [1, 2, 4]
console.log(u8New.buffer); // ArrayBuffer(3) {}方法四:
New TypedArray(typedArray.buffer)优点:支持IE;没有截取出来的typedArray.buffer还是原始的ArrayBuffer的问题
备注:推荐使用该方法
var u8 = new Uint8Array([1,2,4,6]);
var u8New = new Uint8Array(u8.buffer.slice(1, 3));
console.log(u8New); // Uint8Array(2) [2, 4]
console.log(u8New.buffer); // ArrayBuffer(2) {}