对象属性与 ...

正如我们在第二章的“太多,太少,正合适”一节中看到的,...操作符在扩散或收集一个数组上的工作方式是显而易见的。但对象会怎么样?

这样的特性在ES6中被考虑过,但是被推迟到ES6之后(也就是“ES7”或者“ES2016”或者……)了。这是它在“ES6以后”的时代中可能的工作方式:

  1. var o1 = { a: 1, b: 2 },
  2. o2 = { c: 3 },
  3. o3 = { ...o1, ...o2, d: 4 };
  4. console.log( o3.a, o3.b, o3.c, o3.d );
  5. // 1 2 3 4

...操作符也可能被用于将一个对象的被解构属性收集到另一个对象:

  1. var o1 = { b: 2, c: 3, d: 4 };
  2. var { b, ...o2 } = o1;
  3. console.log( b, o2.c, o2.d ); // 2 3 4

这里,...o2将被解构的cd属性重新收集到一个o2对象中(与o1不同,o2没有b属性)。

重申一下,这些只是正在考虑之中的ES6之后的提案。但是如果它们能被确定下来就太酷了。