《JavaScript 高级程序设计(第四版)》—— 06 集合引用类型

Array

给 Array 构造函数传数值会创建初始 length 为 n 的数组

ES6 新增创建数组静态方法:

  • from() —— 将类数组转换成数组实例
  • of() —— 将一组参数转换成数组实例
console.log(Array.from('Shaun'))    // [ 'S', 'h', 'a', 'u', 'n' ]

使用 length 属性可以方便地向数组末尾添加元素。因为每当一个新索引超过数组最大索引,数组长度会自动扩展到该索引值加 1

let colors = ['red', 'yellow', 'blue']
colors[colors.length] = 'black'    // 位置3
colors[color.length] = 'white'    // 位置4

复制和填充方法:

  • copyWithin(targetIndex, startIndex, endIndex) —— 按照指定范围浅复制数组中部分内容,将它们插入到指定索引
  • fill(val, startIndex, endIndex) —— 向数组插入全部或部分值

排序:
sort() 会在每一项调用 String() 转型函数再比较字符串来决定顺序,比较数值应该自定义函数。

定型数组

定义:包含数值类型的特殊数组。

ArrayBuffer 创建预分配内存,视图读写 ArrayBuffer。
一种视图是 DataView,需要用 new 操作符初始化实例,视图维护着对缓冲实例的引用。实例拥有 byteOffset 和 byteLength 属性,默认字节序为大端。
另一种视图是定型数组,它特定于一种 ElementType 且遵循系统原生的字节序。
定型数组可读限制写,所以它拥有 forEach,sort,keys 等方法,但不能调用 concat,push 等改变原数组内容的方法。需要修改内容用 set 方法。

Map

Map 可以用任何 JavaScript 数据类型作为键。

set 方法返回 Map 实例,因此可以把多个操作连缀起来。

Map 实例维护键值对的插入顺序,遍历的时候默认 entries() 为迭代器

选择上,给定固定大小内存,Map 大约可以比 Object 多存储 50% 的键值对;
Map 在浏览器中插入键值对稍快一些;
如果把 Object 当作数组使用情况下,浏览器可以优化,Object 好一些;
Object 中把属性设为 null 或 undefined 是伪删除,Map 的 delete 更快。

WeakMap

WeakMap 的键只能是 Object 或继承自 Object 的类型,且键不可迭代,也没有 clear 方法

Set

Set 可以包含任何 JavaScript 数据类型作为值

add 方法返回 Set 实例,因此可以把多个操作连缀起来

Set 实例维护值的插入顺序,遍历的时候默认 values() 为迭代器

WeakSet

WeakSet 的值只能是 Object 或继承自 Object 的类型,且值不可迭代,也没有 clear 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值