1、对象解构和数组解构不同点:数组是按次序排列的,取值按位置决定;对象没有次序,变量必须与属性同名,才能取到正确的值
2、对象解构:
//完整写法: let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }; //简写: let { foo, bar } = { foo: "aaa", bar: "bbb" };
3、对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。
4、与数组一样,解构可以用于 结构的对象
let obj = { p: [ 'Hello', { y: 'World' } ] }; let { p: [x, { y }] } = obj; x // "Hello" y // "World"
5、对象的解构也可以指定默认值。默认值生效的条件是,对象的属性值严格等于undefined
var {x = 3} = {}; x // 3 var {x, y = 5} = {x: 1}; x // 1 y // 5 var {x: y = 3} = {}; y // 3 var {x: y = 3} = {x: 5}; y // 5 var { message: msg = 'Something went wrong' } = {}; msg // "Something went wrong" var { x = 3 } = { x : undefined}; x // 3 var {x = 3} = { x : null } x // null