设置对象属性:!object.propety易变吗?

时间:2019-07-05 20:26:47

标签: javascript javascript-objects

此代码是否会使对象变异或以其他任何方式易变? 如果可以,该如何避免呢?原因是我无法让分散操作员工作。

const object = {property: false};
const test = {property: !object.property};

1 个答案:

答案 0 :(得分:1)

您的代码没有任何突变。创建test时,原始object不会受到影响,因为.property是一个布尔值(因此是值类型),因此您的新分配仅按值进行。

const test = {property: !object.property}; // assigns a new value to a new reference

另一方面,它做到了:

const object = {property: false};
object.property = !object.property; // mutating the object
const test = object; // copying the reference

不过,您可以这样做:

const object = {property: false};
const test = {...object, property: !object.property}; // creates a copy of object and over-writes the value of the new property