jsarraybufferdaya释放_JavaScript ArrayBuffer浅析

时隔一年半,再次来到博客园。回首刚接触前端时所写的两篇随笔,无法直视啊~

----------------------------------------------------------------------------♠

简介:

ArrayBuffer又称类型化数组。

javascript数组(Array)长什么样子,相信大家都清楚,那么我说说差别应该就可以了解这究竟是个什么了!

数组里面可以放数字、字符串、布尔值以及对象和数组等,ArrayBuffer放0和1组成的二进制数据

数组放在堆中,ArrayBuffer则把数据放在栈中(所以取数据时后者快)

ArrayBuffer初始化后固定大小,数组则可以自由增减。(准确的说,视图才应该跟数组来比较这个特点)

构造函数:

//new ArrayBuffer(Bytelength);

var arraybuffer = new ArrayBuffer(8);//类方法ArrayBuffer.isView() 判断某对象是否为 视图(这是什么?往下看)

var int8a = newInt8Array(arraybuffer);

ArrayBuffer.isView(int8a)//return true

//类属性ArrayBuffer.length 默认值1,暂未发现用处

ArrayBuffer.length //return 1

//返回的对象具有byteLength属性 值为参数Bytelength

arraybuffer.byteLength //return 8

如上所诉:实例化一个对象的时候,仅需要传入一个参数,即字节数。

字节(Byte):存储空间的基本计量单位。一个字节等于8位(bit),每一位用0或1表示。

如下为两个字节(16个格子):

1

0

1

1

0

0

0

1

0

1

0

0

1

0

1

0

视图:

ArrayBuffer对象并没有提供任何读写内存的方法,而是允许在其上方建立“视图”,从而插入与读取内存中的数据。如上:我们在内存中分配了16个格子也就是两个字节,如果我们要划分出A视图与B视图来瓜分这16个格子的话,代码是这样的:

var arraybuffer = new ArrayBuffer(8);var aView = new Int8Array(arraybuffer,0,1);var bView = new Int8Array(arraybuffer,1,1);

aView[0] = 1; //二进制00000001

bView[0] = 2; //二进制00000010

格子变成这样了:

0

0

0

0

0

0

0

1

0

0

0

0

0

0

1

0

前8位表示数字1,后8位表示数字2

视图类型

视图类型

数据类型

占用位数

占用字节

有无符号

Int8A

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值