Uint8Array

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Uint8Array 数组类型表示一个 8 位无符号整型数组,创建时内容被初始化为 0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。

语法格式

new Uint8Array(); // ES2017 最新语法
new Uint8Array(length); // 创建初始化为 0 的,包含 length 个元素的无符号整型数组
new Uint8Array(typedArray);
new Uint8Array(object);
new Uint8Array(buffer [, byteOffset [, length]]);

构造语法和参数的更多信息请参见 TypedArray.

静态属性

Uint8Array.BYTES_PER_ELEMENT

返回数组中元素的字节数,Uint8Array 中返回 1 字节。

Uint8Array.length

静态属性 length 一直为 0。想获知其真实长度(元素个数),请参阅 Uint8Array.prototype.length

Uint8Array.prototype

TypedArray 对象的原型。

静态方法

Uint8Array.from()

从一个数组或可迭代的对象创建一个新的Uint8Array数组,可参见Array.from().

Uint8Array.of()

通过一个可变数目的参数创建一个新的Uint8Array数组,可参见Array.of().

实例属性

还从其父接口 TypedArray 继承实例属性。

Uint8Array.prototype.constructor

返回创建实例属性的函数,默认为 Uint8Array 构造器。

Uint8Array.prototype.buffer 只读

返回由 Uint8Array引用的 ArrayBuffer ,在构造时期固定,所以是只读的。

Uint8Array.prototype.byteLength 只读

返回Uint8Array长度(字节数)。在构造时期固定,所以是 只读的

Uint8Array.prototype.byteOffset 只读

返回Uint8Array 距离其 ArrayBuffer 起始位置的偏移(字节数)。在构造时期固定,所以是 只读的

Uint8Array.prototype.length 只读

返回保存在 Uint8Array中的元素数量。在构造时期固定,所以是 只读的

实例方法

从其父接口 TypedArray 继承实例方法。

示例

js
// 来自长度
var uint8 = new Uint8Array(2);
uint8[0] = 42;
console.log(uint8[0]); // 42
console.log(uint8.length); // 2
console.log(uint8.BYTES_PER_ELEMENT); // 1

// 来自数组
var arr = new Uint8Array([21, 31]);
console.log(arr[1]); // 31

// 来自另一个 TypedArray
var x = new Uint8Array([21, 31]);
var y = new Uint8Array(x);
console.log(y[0]); // 21

// 来自 ArrayBuffer
var buffer = new ArrayBuffer(8);
var z = new Uint8Array(buffer, 1, 4);

// 来自一个迭代器
var iterable = (function* () {
  yield* [1, 2, 3];
})();
var uint8 = new Uint8Array(iterable);
// Uint8Array[1, 2, 3]

规范

Specification
ECMAScript Language Specification
# table-49

浏览器兼容性

BCD tables only load in the browser

兼容性说明

从 ECMAScript 2015 开始,Uint8Array 构造函数需要通过 new 操作符调用。即日起如果没有使用 new 调用 Uint8Array 的构造函数,将会抛出 TypeError

js
var dv = Uint8Array([1, 2, 3]);
// TypeError: calling a builtin Uint8Array constructor
// 不使用 new 将会被禁止
js
var dv = new Uint8Array([1, 2, 3]);

相关内容