ES6引入的數據結構 - ES6 - ECMAScript特性 - Javascript核心

原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.htmlphp

源代碼: https://github.com/RobinQu/Programing-In-Javascript/blob/master/chapters/JavaScript_Core/ECMAScript/es6/es6_data_types.mdhtml

  • 本文須要補充更多例子
  • 本文存在批註,但該網站的Markdown編輯器不支持,因此沒法正常展現,請到原文參考。

ES6引入的數據結構

ES6新加入的數據類型有:node

  • WeakMap
  • WeakSet
  • Map
  • Set
  • Typed Objects1
  • Proxy2
  • Symbol3
  • Promise4

這些數據結構的支持並不普遍,在寫這篇文章的時候。僅有新版本的Firefox和Node v0.11.x以上版本(開啓--harmony參數後)支持。git

Map

提供傳統意義上的Map。支持任意對象做爲key。es6

new Map(iterable)github

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進行直接的枚舉。ecmascript

構造函數和普通的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中支持了。

待補充。能夠參考:

相關文章
相關標籤/搜索