Object.assign第三个参数
时间: 2023-10-12 11:11:33 浏览: 92
`Object.assign()` 方法的第三个参数是可选的,它表示可选的默认值或者覆盖前面的对象值。如果第一个参数是一个空对象,则第三个参数将成为新对象的默认值。如果第一个参数不是空对象,则第三个参数将覆盖前面的对象值。例如:
```
const target = { a: 1, b: 2 };
const source1 = { b: 4, c: 5 };
const source2 = { c: 6 };
const merged = Object.assign(target, source1, source2);
console.log(target); // { a: 1, b: 4, c: 6 }
console.log(merged); // { a: 1, b: 4, c: 6 }
// 使用第三个参数
const target2 = { a: 1, b: 2 };
const source3 = { b: 4, c: 5 };
const source4 = { c: 6 };
const merged2 = Object.assign({}, target2, source3, source4);
console.log(merged2); // { a: 1, b: 4, c: 6 }
// 使用第三个参数作为默认值
const target3 = { a: undefined, b: 2 };
const source5 = { a: 1, b: 4 };
const merged3 = Object.assign({}, target3, source5);
console.log(merged3); // { a: 1, b: 4 }
```
在第一个示例中,`source1` 和 `source2` 对象的属性值覆盖了 `target` 对象的属性值,因此 `target` 和 `merged` 对象的值相同。在第二个示例中,使用一个空对象作为第一个参数,创建了一个新的对象,并将 `target2`、`source3` 和 `source4` 对象的属性复制到新对象中,从而保留了 `target2` 的原始值。在第三个示例中,使用一个空对象作为第一个参数,并将 `target3` 和 `source5` 对象的属性复制到新对象中,由于 `target3` 对象的 `a` 属性值为 `undefined`,因此使用 `source5` 对象的 `a` 属性值作为默认值,得到了最终的 `merged3` 对象。
阅读全文