对象也可以进行解构,只要对应这相同的属性名字,没有被指定的名字会被忽略:
let o= {
a : 1,
b : 2,
c : 3,
d : 4
};
let {a, b, c} = o;//d被忽略了
console.log(a);//输出1
console.log(b);//输出2
console.log(c);//输出3
对象解构也支持剩余变量语法:
let o= {
a : 1,
b : 2,
c : 3,
d : 4
};
let {a, ...m} = o;
console.log(a);//输出1
console.log(m);//输出{ b: 2, c: 3, d: 4 }
不仅仅是可以解构值属性,对象属性也可以被解构:
let {log} = console
log(log);//输出[Function: bound consoleCall]
log(log === console.log);//输出true
解构时通过重命名,可以把对象的属性解构到不同名字的变量上:
let o= {
a : 1,
b : 2,
c : 3
};
let {a : o1, b : o2, c : o3} = o;//o1, o2, o3为重新命名的变量
console.log(o1);//输出1
console.log(o2);//输出2
console.log(o3);//输出3
对象也支持嵌套解构: