此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Uint8Array
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
Uint8Array 数组类型表示一个 8 位无符号整型数组,创建时内容被初始化为 0。创建完后,可以以对象的方式或使用数组下标索引的方式引用数组中的元素。
In this article
语法格式
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.prototypeTypedArray 对象的原型。
静态方法
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 继承实例方法。
示例
// 来自长度var uint8 = new Uint8Array(2);uint8[0] = 42;console.log(uint8[0]); // 42console.log(uint8.length); // 2console.log(uint8.BYTES_PER_ELEMENT); // 1// 来自数组var arr = new Uint8Array([21, 31]);console.log(arr[1]); // 31// 来自另一个 TypedArrayvar x = new Uint8Array([21, 31]);var y = new Uint8Array(x);console.log(y[0]); // 21// 来自 ArrayBuffervar 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® 2026 Language Specification> # sec-typedarray-objects> |
浏览器兼容性
兼容性说明
从 ECMAScript 2015 开始,Uint8Array 构造函数需要通过new 操作符调用。即日起如果没有使用new 调用Uint8Array 的构造函数,将会抛出TypeError 。
var dv = Uint8Array([1, 2, 3]);// TypeError: calling a builtin Uint8Array constructor// 不使用 new 将会被禁止var dv = new Uint8Array([1, 2, 3]);