ES6(2)

  • Array.from
    用于將兩類對象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對象( array-like object )和可遍歷( iterable )的對象(包括 ES6 新增的[數(shù)據(jù)結(jié)構(gòu)]Set 和Map )。
數(shù)組復(fù)制
1.for循環(huán)
2.splice(0,arr.length)
3.[...arr]
4.Array.from(arr);
...延伸
function show1(){
console.log(arguments) //1,2,3
arguments.push(4)   //error
}
show1(1,2,3)
function show2(...args){
console.log(args) //[1,2,3]
args.push(4)   //[1,2,3,4]
}
show2(1,2,3)
  • for of 遍歷(迭代)對象
var myArray = ['a','b','c','d']
for (var value of myArray) {   
    console.log(value);   //a ,b ,c,d
} 

這是目前遍歷數(shù)組最簡潔和直接的語法;
它避免了for-in的所有缺陷;
與forEach()不一樣,它支持break,continue和return。
for-in循環(huán)用于遍歷對象屬性。
for-of循環(huán)用于遍歷數(shù)據(jù)——比如數(shù)組中單值。

  • Map,Set 和 WeakMap,WeakSet
    這些是新加的集合類型,提供了更加方便的獲取屬性值的方法,不用像以前一樣用hasOwnProperty來檢查某個屬性是屬于原型鏈的呢還是當(dāng)前對象的。同時,在進(jìn)行屬性值添加與獲取時有專門的get,set 方法。
// Sets
var s = new Set();
s.add("hello").add("goodbye").add("hello");
s.size === 2;
s.has("hello") === true;
// Maps
var m = new Map();
m.set("hello", 42);
m.set(s, 34);
m.get(s) == 34;
m.delete('s')
for(var [key,val] of m){
    console.log(key , val) ;
}
Map原生提供三個遍歷器生成函數(shù)和一個遍歷方法。
1.keys():返回鍵名的遍歷器。
2.values():返回鍵值的遍歷器。
3.entries():返回所有成員的遍歷器。
4.forEach():遍歷Map的所有成員。

有時候我們會把對象作為一個對象的鍵用來存放屬性值,普通集合類型比如簡單對象會阻止垃圾回收器對這些作為屬性鍵存在的對象的回收,有造成內(nèi)存泄漏的危險。而WeakMap,WeakSet則更加安全些,這些作為屬性鍵的對象如果沒有別的變量在引用它們,則會被回收釋放掉,具體還看下面的例子。

// Weak Maps
var wm = new WeakMap();
wm.set(s, { extra: 42 });
wm.size === undefined
// Weak Sets
var ws = new WeakSet();
ws.add({ data: 42 });//因為添加到ws的這個臨時對象沒有其他變量引用它,所以ws不會保存它的值,也就是說這次添加其實沒有意思
  • 單例模式
對象語法簡潔化
var name = 'name';
var json = {
    name,
    show(){
        console.log(this.name)
    },
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容