ES6--对象

ES6中对对象的修改还是比较大的,增加了很多很实用的方法,让开发者使用对象时更加便利,小结一下。很多说明和理解都写在注释里了,欢迎指正~~

/*
    Object.assign()方法用于对象的合并。将源对象的可枚举属性复制到目标属性。类似于jQuery的extend()
*/
var target = {a : 1};
var source = {b : 2};
var aim = Object.assign(target,source);
console.table(aim);   // {a : 1,b : 2}

/*如果有同名属性,后面的属性会覆盖前面的属性*/
var target1 = {a : 1};
var source1 = {a : 3,b : 2};
var aim1 = Object.assign(target,source);
console.log(aim1); // {a : 3,b : 2}

/*如果只有一个参数则直接返回该参数 如果该参数不是对象则会先转换成对象然后返回*/
var obj = {a : 1};
Object.assign(obj) === obj; // true
typeof Object.assign(2);  //object
/*undefined和null不能转换成对象所以如果他们作为参数就会报错*/
// Object.assign(null);  Object.assign(undefined);  // 报错

/*Object.assign()方法实行的浅拷贝而不是深拷贝,也就是说,如果源对象的某个属性值是个对象,那么目标对象拷贝得到的是这个对象的引用
也就是说,源对象的这个属性的改变会反映到目标对象上*/

var obj1 = {a : {b : 1}};
var obj2 = Object.assign({},obj1); // {a : {b : 1}}
obj1.a.b = 2;
console.log(obj2);  // {a : {b : 2}}

/*这种嵌套的对象,如果遇到同名属性,就替换而不是添加*/
var obj3 = {a : {b : 1,c : 2}};
var obj4 = {a : {b : 3,}};
Object.assign(obj3,obj4);  // {a : {b : 3,}} 两个对象有同名属性a 所以会把整个a属性替换 而不会得到 {a : {b : 3,c : 2}}


/*Object.keys()  返回一个数组 数组的成员是对象的键*/
var obj5 = { foo: "bar", baz: 42 };
Object.keys(obj5);  // ['foo','baz']

/*Object.values() 返回一个数组 数组的成员是属性值*/
var obj6 = {foo : 'bar',baz : {a : 1}};
Object.values(obj6); // ['bar',{a : 1}]

/*Object.entries() 返回一个数组  数组的成员为键值对数组*/
Object.entries(obj5);  // [ ['foo','bar'],['baz',42] ]

/*Object.getOwnPropertyDescriptor()返回一个对象,描述对象的某个属性*/
var obj7 = {foo : 'bar'};
Object.getOwnPropertyDescriptor(obj7,'foo');
/*{ value: "bar",
   writable: true,
   enumerable: true, // 可枚举性 如果该属性的可枚举性为false 以下操作则会忽略该属性  for...in  Object.keys()  JSON.stringify()
   configurable: true
 }*/

/* --单纯的解构赋值可以读取继承的属性,而rest解构赋值变量只能读取对象本身的属性(不能读取继承属性和Symbol属性)-- */





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值