《深入理解ES6》阅读随笔
数值数据类型
无符号八位整形
有符号八位整形
无符号十六位整形
有符号十六位整形
无符号三十二位整形
有符号三十二位整形
三十二位浮点型
六十四位浮点型
数组缓冲区
在使用定型数组之前,需要为其分配内存空间,这个内存空间就叫数组缓冲区;
const buff1= new ArrayBuffer(10);
通过视图来操作数组缓冲区
获取视图信息
光有内存空间还不够,否则我们还无法对其进行一系列操作;这个时候会用到视图的概念,视图是操作数组缓冲区的接口,对数组缓冲区进行一系列读写操作;
const buff1= new ArrayBuffer(10);
// 创建视图
const view1= new DataView(buff1,2,3);
视图包含数组缓冲区的长度、偏移量以及所属的数组缓冲区;
读取和写入视图
在视图中可以任意操作已存在的八类定型数组数值类型,使用 get 加类型进行读取,set 加类型进行写入:
- 如果试图写入其他类型数据,视图均会自动将其转化为零然后再写入;
- 已写入的八类数值类型可以灵活读取,比如可以将已存在的两位八位整形读取为一位十六位整形;
const buff1 = new ArrayBuffer(10)
const view1 = new DataView(buff1, 2, 2)
console.log(view1.getInt8(0)) // 0
view1.setInt8(0, 100)
console.log(view1.getInt8(0)) // 100
定型数组是视图
定型数组其实就是特殊类型的视图,定型数组构造函数可用于处理八类定型数组类型,下面是三种初始化定型数组的方式:
- 使用构造函数创建视图时,通过直接传入构建普图视图的参数来构建定型数组:
const buff1 = new ArrayBuffer(10)
const int8List1 = new Int8Array(buff1, 2, 2)
- 构造函数传入一个数值参数来创建定型数组,该参数代表定型数组的长度:
const buff1 = new ArrayBuffer(10)
const int8List1 = new Int8Array(2)
- 构造函数还可以传入定型数组、迭代器、数组、类数组对象等来创建定型数组:
const buff1 = new ArrayBuffer(10)
const int8List1 = new Int8Array([1,2]) // 传入数组
const int8List2 = new Int8Array(int8List1) // 出入定型数组
网友评论