ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
一.对象的解构赋值
1.基本写法
-
基本写法
let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; foo // "aaa" bar // "bbb"
2.特点
-
① 对象属性赋值是按照属性名匹配的,和属性顺序无关。
let { bar, foo } = { foo: 'aaa', bar: 'bbb' }; foo // "aaa" bar // "bbb"
-
② 对象解构无相应属性,赋值为
undefined
let { foo} = { bar: 'baz'}; foo // undefined
-
③ 对象的解构赋值可以取到继承的属性
const obj1 = { }; const obj2 = { foo: 'bar' }; Object.setPrototypeOf(obj1, obj2); const { foo } = obj1; foo // "bar"
-
④ 与数组一样,解构也可以用于嵌套结构的对象。
//一.嵌套结构 let obj = { p: [ 'Hello', { y: 'World' } ] };