【发布时间】:2018-11-05 23:44:48
【问题描述】:
遇到了使用扩展语法创建新对象的概念,如下所示
const human = { age: 20 };
const john = { ...human };
john.age = 10;
console.log(human.age); // 20
console.log(john.age); // 10
如上图所示,人类对象得到保留它的原始值。现在看看下面的代码:
const human = { age: 20, cars: ["toyota", "honda"] };
const john = { ...human };
john.cars[1] = "camero";
console.log(human.cars); // ["toyota", "camero"]
console.log(john.cars); // ["toyota", "camero"]
谁能向我解释为什么会发生上述情况?为什么人类的汽车对象会改变?在我看来,开发人员很可能在不了解如何避免不一致行为的情况下犯错误
【问题讨论】:
标签: javascript ecmascript-6 spread-syntax