js ArrayBuffer

ArrayBuffer是JavaScript中用于处理二进制数据的低级构造,它表示固定长度的原始二进制数据缓冲区。不能直接操作,需要通过类型数组或DataView进行操作。ArrayBuffer有length属性,创建时初始化为0。可以通过isView方法检查是否为ArrayBuffer的视图,slice和transfer方法用于数据截取和转移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ArrayBuffer

ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。

它是一个字节数组,通常在其他语言中称为“byte array”。

你不能直接操作 ArrayBuffer 的内容,而是要通过类型数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

尝试一下

语法
new ArrayBuffer(length)
参数
length
要创建的 ArrayBuffer 的大小,单位为字节。

返回值
一个指定大小的 ArrayBuffer 对象,其内容被初始化为 0。

异常
如果 length 大于 Number.MAX_SAFE_INTEGER(>= 2 ** 53)或为负数,则抛出一个 RangeError 异常。

描述
ArrayBuffer 构造函数用来创建一个指定字节长度的 ArrayBuffer 对象。

以现有数据获取 ArrayBuffer
从 Base64 字符串
从本地文件
属性
ArrayBuffer.length
ArrayBuffer 构造函数的 length 属性,其值为 1。

ArrayBuffer.prototype.byteLength
只读属性,表示 ArrayBuffer 的 byte 的大小,在 ArrayBuffer 构造完成时生成,不可改变。

get ArrayBuffer[@@species]
返回 ArrayBuffer 的构造函数。

ArrayBuffer.prototype (en-US)
通过 ArrayBuffer 的原型对象可以为所有 ArrayBuffer 对象添加属性。

方法
ArrayBuffer.isView(arg)
如果参数是 ArrayBuffer 的视图实例则返回 true,例如 类型数组对象 或 DataView 对象;否则返回 false。

ArrayBuffer.transfer(oldBuffer [, newByteLength]) Experimental
返回一个新的 ArrayBuffer 对象,其内容取自 oldBuffer 中的数据,并且根据 newByteLength 的大小对数据进行截取或补 0。

ArrayBuffer 实例
所有 ArrayBuffer 实例都会从 ArrayBuffer.prototype (en-US) 继承属性和方法。

属性
{{page(‘zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype’,‘属性’)}}
方法
{{page(‘zh-CN/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype’,‘方法’)}}
ArrayBuffer.slice() Non-Standard
和 ArrayBuffer.prototype.slice() 功能相同。

示例
下面的例子创建了一个 8 字节的缓冲区,并使用一个 Int32Array 来引用它:

var buffer = new ArrayBuffer(8);
var view = new Int32Array(buffer);

ArrayBuffer

增强JS的二进制处理能力,就有了ArrayBuffer。ArrayBuffer简单说是一片内存,但是你不能(也不方便)直接用它。这就好比你在C里面,malloc一片内存出来,你也会把它转换成unsigned_int32或者int16这些你需要的实际类型的数组/指针来用。这就是JS里的TypedArray的作用,那些Uint32Array也好,Int16Array也好,都是给ArrayBuffer提供了一个“View”,MDN上的原话叫做“Multiple views on the same data”,对它们进行下标读写,最终都会反应到它所建立在的ArrayBuffer之上。除了TypedArray以外,也可以使用DataView来读写ArrayBuffer,这样会麻烦一些,但也更灵活。DataView能更自由的选择字节序,对于对齐的要求也更低.
这四个属性都是只读的:

buffer     返回ArrayBuffer的引用

byteLength  返回字节长度

byteOffset   返回视图在该ArrayBuffer中占用内存区域的起点位置

length     返回视图数据的个数

set()     第一个参数为已有的视图或者数组,第二个参数代表从第几个字节开始设置值

subarray   返回一个新的视图,如果第二个参数省略,则取剩余的全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值