ES6引入的destructuring assignment句法支持从对象拆包值:同时使用解构赋值分配到新的可变
let { r = 0, g = 0, b = 0 } = { r: 255, g: 55 };
let color = { r, g, b };
console.log(color, r, g, b); // prints "{r: 255, g: 55, b: 0} 255 55 0"
然而,下面的代码段将不具有相同的效果:
let color = { r = 0, g = 0, b = 0 } = { r: 255, g: 55 }
console.log(color); // prints "{r: 255, g: 55}"
如果您颠倒了订单,也是如此:
let { r = 0, g = 0, b = 0 } = color = { r: 255, g: 55 }
console.log(color); // prints "{r: 255, g: 55}"
是有一个单行的解决方案分配r
,g
,b
,以及color
?
没有,创建一个新的对象总是需要的对象文字。另请参阅[单线程从ES6中的对象获取一些属性](https://stackoverflow.com/q/25553910/1048572)。你的双线版本就好了。 – Bergi