ECMAScript6学习之三

1、展开运算符(spread (...) operator)

以前我们把某一个方法作为某一个对象的方法调用时,方法如下:

        function ecma(x, y, z) {
             alert(‘x:‘ + x + ", y=" + y + ‘, z=‘ + z);
	 }
	var args = [0, 1, 2];
	ecma.apply(null, args);

有了ECMAScript6就可以变成如下形式了,

        function ecma(x, y, z) {
	     alert(‘x:‘ + x + ", y=" + y + ‘, z=‘ + z);
	}
	var args = [0, 1, 2];
	ecma(...args);

	当然也可以展开多个,如下:
	function ecma(v, w, x, y, z) {
	     alert(‘x:‘ + x + ", y=" + y + ‘, z=‘ + z);
	}
	var args = [ 1, 2];
	ecma(1,...args,...args);

更好的push方法,先看原来的实现方法,将一个数组的元素放进另外一个数组中

        var orginal = [1,2];
	var target = [4,5];
	Array.prototype.push.apply(target,orginal);

	note:自己可以试下target.push(orginal);

现在的实现如下:

        var target = [0, 1, 2];
	var orginal = [3, 4, 5];
	target.push(...orginal);

	还可以将类数组转换为数组,如[...nodeList]

2、class,super,object literal extensions, template string,RegExp "y" and "u"             flags, defined array各浏览器都未实现

3、2进制和8进制数据

二进制整数: 0b010101 或 0B010101; 八进制整数: 0o7170 或 0O7170

4、Map && weakMap

(1)Map

在java中,Map集合是我们最常用的元素,key-value方式是我们组织数据比较方便的形式,ES6中也引入了Map元素,但是js中的key和value可以是些特殊的值,比如说0、NaN。

    var map = new Map();
    map.set(‘key‘,‘1111‘);
    map.get(‘key‘);
    myMap.set(NaN, "not a number");
    myMap.get(NaN); // "not a number"
    myMap.set(0, "正零");
    myMap.set(-0, "负零");
    myMap.get(-0); // "负零"
    myMap.get(0);  // "正零"

    当然,value值还可以是更加复杂的结构,例子如下:
    var map = new Map();
    var obj = {
	name : ‘Eason‘,
	say : function(){
		alert(‘aaa‘);
	      }
	};
    map.set(‘key2‘,obj);
    var o = map.get("key2");
    o.say()

当然了,你可以继续往map对象中set值,你也查看map对象的size,可以使用map.size.需要注意的是,在FF18及其以前的版本中需要使用 map.size(),清理map内的所有内容使用map.clear(),判断map中是否有相应的key值使用map.has(‘key‘);

(2)weakMap

WeakMap对象就是简单的键/值映射.但键只能是对象值,不可以是原始值.

5、Set

一个Set对象允许你向里面存储任意类型的唯一值(不能重复), 不管是原始值还是对象值

var mySet = new Set();
 mySet.add(1);
 mySet.add(5);
 mySet.add("some text");
 mySet.has(1); // true
 mySet.has(3); // false, 3没有被添加进这个set中
 mySet.has(5);              // true
 mySet.has(Math.sqrt(25));  // true
 mySet.has("Some Text".toLowerCase()); // true
			 
 mySet.size; // 3
 
 mySet.delete(5); // 从这个set中删除5
 mySet.has(5);    // false,5已经被删除了
			 
 mySet.size; // 2, 刚刚删除了一个元素
			 
 // 遍历set中的元素
 for (let item of mySet) 
  console.log(item); // 按顺序打印出: 1, "some text"
			 
  // 将一个set转换成数组
 var myArr = [v for (v of mySet)]; // [1, "some text"]
			 
 // 如果运行在一个HTML文档中,下面的代码也能正常工作
 mySet.add(document.body);
 mySet.has(document.querySelector("body")); // true

这次就到这里,有问题请留言!

时间: 2024-10-10 12:59:40

ECMAScript6学习之三的相关文章

cc2530 makefile简略分析 <contiki学习之三>

前面将contiki的makefile框架都理了下,这篇就以cc2530为收篇吧,也即makefile分析就该到此为止了. contiki/examples/cc2530dk 打开Makefile如下图: 第一行的 "CONTIKI_PROJECT"变量依赖于该目录下的  blink-hello.c  hello-world.c  sensors-demo.c  timer-test.c 4个C源文件 第五行的"CONTIKI"变量被定义成 contiki/ 路径,

【转】MYSQL入门学习之三:全文本搜索

转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而InnoDB不支持. 2.在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词.MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行.这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等. 二.使用全文本搜索 1.为了进行全文本搜索,必须索引被搜索的列,

mysql学习之三:sql语句学习

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如MySQL. MS Access.DB2.Informix.MS SQL Server.Oracle.Sybase 以及其他数据库系统. 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT.UPDATE.DELETE.INSERT.WHERE 等等).

AspectJ基础学习之三HelloWorld(转载)

AspectJ基础学习之三HelloWorld(转载) 一.创建项目 我们将project命名为:aspectjDemo.然后我们新建2个package:com.aspectj.demo.aspect 和 com.aspectj.demo.test 前者用来方apsect.后者用来放测试类.如果你仔细的话,你会发现Aspectj的项目上面有个AJ的标志. 二.创建Aspect 首先我们创建HelloWorld.java.他包含main()方法,但是没有方法体,代码如下: [java] view

PGM学习之三 朴素贝叶斯分类器(Naive Bayes Classifier)

介绍朴素贝叶斯分类器的文章已经很多了.本文的目的是通过基本概念和微小实例的复述,巩固对于朴素贝叶斯分类器的理解. 一 朴素贝叶斯分类器基础回顾 朴素贝叶斯分类器基于贝叶斯定义,特别适用于输入数据维数较高的情况.虽然朴素贝叶斯分类器很简单,但是它确经常比一些复杂的方法表现还好. 为了简单阐述贝叶斯分类的基本原理,我们使用上图所示的例子来说明.作为先验,我们知道一个球要么是红球要么是绿球.我们的任务是当有新的输入(New Cases)时,我们给出新输入的物体的类别(红或者绿).这是贝叶斯分类器的典型

Spring MVC学习之三:处理方法返回值的可选类型

转自:http://www.cnblogs.com/cuizhf/p/3810652.html ———————————————————————————————————————————————————————————— spring mvc处理方法支持如下的返回方式:ModelAndView, Model, ModelMap, Map,View, String, void.下面将对具体的一一进行说明: ModelAndView @RequestMapping("/show1") publ

【SQL Server】系统学习之三:逻辑查询处理阶段-六段式

一.From阶段 针对连接说明: 1.笛卡尔积 2.on筛选器 插播:unknown=not unknuwn 缺失的值: 筛选器(on where having)把unknown当做FALSE处理,排除在筛选结果之外.如果比较两个null,结果是不相等的,false check约束中当做true,例如要求某列大于0,当插入null时是成功的,认为null>0是ture.如果比较两个null,结果是相等的,这种比较在unique约束.集合运算(例如union .except).排序.分组,都认为是

SSH学习之三 SSH与SCP无密码登录

通常情况下,每次使用ssh登录或使用scp复制远程系统的文件时,都需要提供密码,然后才能做进一步的处理.为了省略输入密码这一步骤,有时可以采用Shell脚本的方法解决,但这需要把手工输入的密码以明码形式放在脚本文件中. 利用密钥配置文件,OpenSSH可以是ssh远程登录与scp文件复制的操作过程中省略密码验证的中间环节.为此,ssh客户端首先应建立OpenSSH连接,然后自动地想服务器发送其公钥.之后,服务器即可根据相应用户主目录中预定义的密钥列表,对收到的密钥进行比较.如果存在匹配的密钥,服

OpenStack 入门学习之三:单节点icehouse网桥的配置

部署完icehouse,安装完实例之后,如果虚拟主机需要和外部进行通信,还需要对宿主机的网桥进行配置 具体配置如下 修改ifcfg-em1的内容为以下内容: DEVICE=em1 ONBOOT=yes DEVICETYPE=ovs TYPE=OVSPort OVS_BRIDGE=br-ex #HWADDR=F8:B1:56:AE:3A:84 #TYPE=Ethernet #UUID=6f49b547-f1f8-4b21-a0fc-68791a5237dd #BOOTPROTO=static #I