ES6(2)

  • Array.from
    用于将两类对象转为真正的数组:类似数组的对象( array-like object )和可遍历( iterable )的对象(包括 ES6 新增的[数据结构]Set 和Map )。
数组复制
1.for循环
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循环用于遍历对象属性。
for-of循环用于遍历数据——比如数组中单值。

  • 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)
    },
}

你可能感兴趣的:(ES6(2))