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

發佈了60 篇原創文章 · 獲贊 22 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章