es6-对象扩展

1.简介表示法

2.属性表达式

let a = 'b';

letes6_obj={

      [a]:'c'//此处[]内为变量

}//{ b: 'c' }

3.扩展运算符(暂时支持不高)

//扩展运算符

let{a,b,...c}={a:'121',b:'dasds',c:'dasdas',d:'vdfsf'};//此处babel-polyfill对其支持仍不好

console.log(c);

4.Object新方法

1)Object.assign()为浅拷贝,且拷贝对象自身的属性,如果对象有继承,不会去拷贝继承的属性,不能拷贝对象不可枚举的属性

let a={name:'zhangsan'};

let b={age:18}

let obj=Object.assign(a,b);

console.log(obj,obj.name===a.name,obj.age===b.age,a.age===b.age);//{ name: 'zhangsan', age: 18 } true true true

let obj1=Object.assign({},obj,a,b);//{ name: 'zhangsan', age: 18 }

console.log(obj1);

2)Object.entries()

let test = {k: 123, o: 212};

for (let [key, value] of Object.entries(test)) {//暂时支持不好

console.log(key, value);

}

5.浅拷贝和深拷贝的区别:

avaScript存储对象都是存地址的

浅拷贝:只拷贝引用型数据类型的地址(地址一样,同一堆中的值)

深拷贝:在内存中开辟新的空间把引用型数据类型在栈和堆中的值均拷贝过去(即全新的数据)

参考:https://github.com/wengjq/Blog/issues/3

6.不可枚举的属性

描述对象的enumerable属性,称为“可枚举性”,如果该属性为false,即为不可枚举,此时通过for...in是不能遍历到 。

参考:http://www.jianshu.com/p/322a149d0f61

你可能感兴趣的:(es6-对象扩展)