ES2015 (ES6) 子解构

ES2015 (ES6) sub destructuring

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

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

这种解构模式是否可行:

let { subObj: { id } } = obj

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

我想在一次操作中抓取子对象和子对象中的一个 属性。我查看了此资源 2ality,但找不到答案。

I would like to grab the sub object and a property within the sub object in one operation

你可以这样做:

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);