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
這次就到這裏,有問題請留言!