And*_*mas 5 javascript object spread-syntax
假设我有一个对象:{a: 'A', b: 'B', c: 'C'}并且我想从中创建一个新对象,该对象具有相同的值,但我想设置c: 'D'.
它的语法是什么?我试过类似的东西:
{c: 'D', ...rest} = {...foo}
但这不是有效的语法。
你可以这样写你的代码:
var obj1 = {a: 'A', b: 'B', c: 'C'}
var obj2 = {...obj1, c: 'D'}
console.log(obj2)Run Code Online (Sandbox Code Playgroud)
写入...obj1会填充obj2的obj1内容,写入c: 'D'会覆盖c: 'c'。
请注意,正如 maheer 提到的,排序很重要,因为对象将从每个属性按顺序写入,这可能会扰乱键的排序并设置不正确的值:
var obj = {a: 'A', b: 'B', c: 'C'}
var ex1 = {...obj, c: 'D'}
var ex2 = {c: 'D', ...obj}
var ex3 = {c: 'D', ...obj, c: 'E'}
console.log('Example 1:', ex1)
console.log('Example 2:', ex2)
console.log('Example 3:', ex3)Run Code Online (Sandbox Code Playgroud)
你在右手边传播语法。
注意:首先使用扩展运算符,然后设置新属性。例如{c:'D',...foo}不会工作。
let foo = {a: 'A', b: 'B', c: 'C'};
let res = {...foo, c:'D'};
console.log(res)Run Code Online (Sandbox Code Playgroud)