原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html
- 本文须要补充更多例子
- 本文存在讲明,但该网站的Markdown编辑器不支撑,所以没法一般展现,请到原文参考。
ES6引入的数据结构
ES6新到场的数据类型有:
这些数据结构的支撑并不普遍,在写这篇文章的时刻。唯一新版本的Firefox和Node v0.11.x以上版本(开启--harmony
参数后)支撑。
Map
供应传统意义上的Map。支撑恣意对象作为key。
new Map(iterable)
iteralbe是Array或其他可罗列的对象,其每一个元素是key、value的2元数组。
主要的属性和要领:
- Map.prototype.size
- Map.prototype.clear()
- Map.prototype.entries()
- Map.prototype.forEach(callback, thisArg)
- Map.prototype.get(k)
- Map.prototype.set(k,v)
- Map.prototype.has(k)
- Map.prototype.keys()
- Map.prototype.values()
Set
传统意义上的Set
。
- Set.prototype.size
- Set.prototype.add(v)
- Set.prototype.clear()
- Set.prototype.delete(v)
- Set.prototype.entries()
- Set.prototype.forEach(callback, thisArg)
- Set.prototype.has(v)
- Set.prototype.keys()
- Set.prototype.values()
WeakMap
Weak开首的Set和Map不对key持有援用,不影响GC。因而,他们没有办法对本身entries的key举行直接的罗列。
组织函数和一般的Map雷同:
new WeakMap(iterable)
- WeakMap.prototype.clear()
- WeakMap.prototype.delete(k)
- WeakMap.prototype.get(k)
- WeakMap.prototype.has(k)
- WeakMap.prototype.set(k,v)
WeakSet
new WeakSet(iterable)
- WeakSet.prototype.add(v)
- WeakSet.prototype.clear()
- WeakSet.prototype.delete(v)
- WeakSet.prototype.has(v)
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中支撑了。
待补充。能够参考:
- http://www.slideshare.net/BrendanEich/metaprog-5303821
- http://soft.vub.ac.be/~tvcutsem/proxies/
- http://ariya.ofilabs.com/2013/07/es6-and-proxy.html
http://wiki.ecmascript.org/doku.php?id=harmony:typed_objects ↩
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy ↩
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-constructor ↩
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise ↩