Javascript编程语言

ES6引入的数据结构

ES6新加入的数据类型有:

这些数据结构的支持并不广泛,在写这篇文章的时候。仅有新版本的Firefox和Node v0.11.x以上版本(开启--harmony参数后)支持。

Map

提供传统意义上的Map。支持任意对象作为key。

new Map(iterable)

iteralbe是Array或其他可枚举的对象,其每个元素是key、value的2元数组。

重要的属性和方法:

Set

传统意义上的Set

WeakMap

Weak开头的Set和Map不对key持有引用,不影响GC。因此,他们没有办法对自身entries的key进行直接的枚举。

构造函数和普通的Map相同:

new WeakMap(iterable)

WeakSet

new WeakSet(iterable)

Typed Objects

类似Ruby的Struct的,但是目前没有任何引擎实现。

Proxy Objects

var proxy = Proxy(target, handler);

target的函数调用转向到handler之上。目前除了Firefox支持,没有其他任何JavaScript引擎支持。

Symbol

笔者还在理解中。目前新版的Chrome和node支持。

Prmoise

原生版本的Promise API,有关Promise的内容,会在另外一篇文章内详细说明: JavaScript Promise

Proxy

Proxy是JavaScript元编程的一道大门。JavaScript在语言层面无法去重载操作符,但是通过Proxy API,我们可以彻底的修改一个对象的各种行为。这种强大的行为已经在node --harmony和Firefox中支持了。

待补充。可以参考:


  1. http://wiki.ecmascript.org/doku.php?id=harmony:typed_objects

  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

  3. http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor

  4. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise