ES2015(ES6)子解构

时间:2016-11-22 11:03:40

标签: javascript ecmascript-6 destructuring

我对Javascript中的解构有疑问,例如我有这个对象结构:

let obj = { 
    subObj: {
        id: 123,
        otherProp: 'value'      
    }
};

这种解构模式是否可行:

let { subObj: { id } } = obj

let someId = id;
let otherObj = subObj //this is not working

我想在一个操作中抓取子对象和子对象中的属性。我已经查看了这个资源2ality,但无法找到答案。

1 个答案:

答案 0 :(得分:2)

  

我想在一次操作中抓取子对象和子对象中的属性

你可以这样做:

let {subObj : {id}, subObj} = obj;
//   ^^^^^^^^^^^^^  ^^^^^^
//         \           \----- grabs subObj
//          \---------------- grabs id

另一个订单也很好:

let {subObj, subObj : {id}} = obj;
//   ^^^^^^  ^^^^^^^^^^^^^
//      \          \--------- grabs id
//       \------------------- grabs subObj

示例:

let obj = {
  subObj: {
    id: 123,
    otherProp: 'value'
  }
};
// Grabs subObj ----vvvvvv
let {subObj : {id}, subObj} = obj;
//   ^^^^^^^^^^^^^---grabs id
console.log(subObj);
console.log(id);