- Array.from
用于將兩類對象轉為真正的數組:類似數組的對象( array-like object )和可遍歷( iterable )的對象(包括 ES6 新增的[數據結構]Set 和Map )暇番。
數組復制
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
}
這是目前遍歷數組最簡潔和直接的語法欢揖;
它避免了for-in的所有缺陷柒爸;
與forEach()不一樣白魂,它支持break西土,continue和return魄揉。
for-in循環(huán)用于遍歷對象屬性。
for-of循環(huán)用于遍歷數據——比如數組中單值金赦。
- Map,Set 和 WeakMap音瓷,WeakSet
這些是新加的集合類型,提供了更加方便的獲取屬性值的方法夹抗,不用像以前一樣用hasOwnProperty來檢查某個屬性是屬于原型鏈的呢還是當前對象的绳慎。同時,在進行屬性值添加與獲取時有專門的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原生提供三個遍歷器生成函數和一個遍歷方法。
1.keys():返回鍵名的遍歷器沽甥。
2.values():返回鍵值的遍歷器声邦。
3.entries():返回所有成員的遍歷器。
4.forEach():遍歷Map的所有成員摆舟。
有時候我們會把對象作為一個對象的鍵用來存放屬性值亥曹,普通集合類型比如簡單對象會阻止垃圾回收器對這些作為屬性鍵存在的對象的回收邓了,有造成內存泄漏的危險。而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)
},
}