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
这次就到这里,有问题请留言!