首页 > 代码库 > ECMAScript6学习之三
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
这次就到这里,有问题请留言!
本文出自 “Eason's hcc” 博客,请务必保留此出处http://hcc0926.blog.51cto.com/172833/1584255
ECMAScript6学习之三