你不懂JS:ES6与未来

第五章:集合

结构化的集合与数据访问对于任何JS程序来说都是一个关键组成部分。从这门语言的最开始到现在,数组和对象一直都是我们创建数据结构的主要机制。当然,许多更高级的数据结构作为用户方的库都曾建立在这些之上。

到了ES6,最有用(而且优化性能的!)的数据结构抽象中的一些已经作为这门语言的原生组件被加入了进来。

我们将通过检视 类型化数组(TypedArrays) 来开始这一章,技术上讲它与几年前的ES5是同一时期的产物,但是仅仅作为WebGL的同伴被标准化了,而不是作为JavaScript自身的一部分。到了ES6,这些东西已经被语言规范直接采纳了,这给予了它们头等的地位。

Map就像对象(键/值对),但是与仅能使用一个字符串作为键不同的是,你可以使用任何值 —— 即使是另一个对象或map!Set与数组很相似(值的列表),但是这些值都是唯一的;如果你添加一个重复的值,它会被忽略。还有与之相对应的weak结构(与内存/垃圾回收有关联):WeakMap和WeakSet。

复习

ES6定义了几种有用的集合,它们使得处理解构化的数据更加高效和有效。

类型化数组提供了二进制数据缓冲的“视图”,它使用各种整数类型对齐,比如8位无符号整数和32位浮点数。二进制数据的数组访问使得操作更加容易表达和维护,它可以让你更简单地处理如视频,音频,canvas数据等复杂的数组。

Map是键-值对集合,它的键可以是对象而非只可以是字符串/基本类型。Set是(任何类型的)唯一值的列表。

WeakMap是键(对象)被弱持有的map,所以如果它是最后一个指向这个对象的引用,GC就可以自由地回收这个记录。WeakSet是值被弱持有的set,所以同样地,如果它是最后一个指向这个对象的引用,GC就可以移除这个记录。

results matching ""

    No results matching ""