教程集 www.jiaochengji.com
教程集 >  脚本编程  >  javascript  >  正文 ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心

ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心

发布时间:2016-09-28   编辑:jiaochengji.com
教程集为您提供ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心等资源,欢迎您收藏本站,我们将为您提供最新的ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心资源

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

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

  • 本文需要补充更多例子
  • 本文存在批注,但该网站的Markdown编辑器不支持,所以无法正常展示,请到原文参考。

ES6引入的数据结构

ES6新加入的数据类型有:

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

这些数据结构的支持并不广泛,在写这篇文章的时候。仅有新版本的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

  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 ↩

您可能感兴趣的文章:
ES6引入的数据结构 – ES6 – ECMAScript特性 – Javascript核心
ES6语法特性 – ES6 – ECMAScript特性 – Javascript核心
ES6特性概述 – ES6 – ECMAScript特性 – Javascript核心
jQuery源码分析系列
[翻]ECMAScript 6 特性速览
Sublime Text内运行javascript(ES6)
Strict Mode和Extended Mode – Javascript语法基础 – Javascript核心
词法 – Javascript核心 – Javascript语法基础
数据结构与算法JavaScript (五) 串(经典KMP算法)
ECMAScript 6新特性印象之二:面对对象和模块化

[关闭]
~ ~