对象属性与 ...
正如我们在第二章的“太多,太少,正合适”一节中看到的,...
操作符在扩散或收集一个数组上的工作方式是显而易见的。但对象会怎么样?
这样的特性在ES6中被考虑过,但是被推迟到ES6之后(也就是“ES7”或者“ES2016”或者……)了。这是它在“ES6以后”的时代中可能的工作方式:
var o1 = { a: 1, b: 2 },
o2 = { c: 3 },
o3 = { ...o1, ...o2, d: 4 };
console.log( o3.a, o3.b, o3.c, o3.d );
// 1 2 3 4
...
操作符也可能被用于将一个对象的被解构属性收集到另一个对象:
var o1 = { b: 2, c: 3, d: 4 };
var { b, ...o2 } = o1;
console.log( b, o2.c, o2.d ); // 2 3 4
这里,...o2
将被解构的c
和d
属性重新收集到一个o2
对象中(与o1
不同,o2
没有b
属性)。
重申一下,这些只是正在考虑之中的ES6之后的提案。但是如果它们能被确定下来就太酷了。