对象解构赋值

- 左侧要定义的变量名===右侧对象中的属性名

let {a,b}={a:1,b:{c:2}};
console.log(a,b);//a=1,b={c:2}
                      //左侧要定义的变量,直接等于右侧相同属性名的属性值 
//实际上左侧是属性名和属性值相同省略了,如果不省略应该是这样的{a:a,b:b}={a:1,b:{c:2}};
//左侧的属性值是变量,是我们要定义的

- 左侧要定义的变量名!==右侧对象中的属性名,左侧就不能省略

let {a:x1,b:x2}={a:1,b:{c:2}};
console.log(x1,x2);//a=1,b={c:2}

 - 对象的结构he数组的结构都是同时定义多个变量,区别是一个从数组里拿值,一个从对象里拿值

- 对象键值对是无序的,不一定按照顺序排列。取值时左侧会自动和右侧中属性名相同的匹配然后取值

- 例子,想取右侧a键值对中数组的某一项,如何取

//例1
let {b,a:[x,y,z]}={a:[1,2,3],b:"1,2,3"}; console.log(b,x,y,z);//b="1,2,3",x=1,b=2,c=3

//例2
let obj={s:{n:"1"},n:[1,"2",3,"4"],m:[[1]]};
let {m:[x1],s:{n},n:[,...m2]}=obj;//其中左侧要定义的变量是x1,n,m2
console.log(x1,n,m2);//x1=[1],n="1",m2=["2",3,"4"]

- 和数组一样,对象也有默认值

//左侧对象中属性名属性值(变量)相同能够省略时
let {a=1}={a:undefined};
console.log(a);//a=1
    
//左侧对象中属性名属性值(变量)不相同,不能够省略时
let {a:b=1}={a:undefined};
console.log(a);//b=1
       
//右侧不是对象,会默认将其转化为对象
let {x,y}=1;//x=undefined,y=undefined

//右侧如果是null,undefined会报错,这两个值无法转化为对象
let {x,y}=null;//报错
对象的属性名是字符串
var obj={
fn:function () {

},
//可以简写
fn1(){

}
};
- 判断两个值是否相等
  Object.is(NaN,NaN);//true

- 合并对象,将Obj2合并到Obj1上,返回合并后的Obj1
  Object.assign({a: 1}, {b: 2});//{a: 1, b: 2}

 

转载于:https://www.cnblogs.com/zlsqd/p/11333245.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值