Skip to content
登录后刷题更便捷

请解释可变对象和不可变对象之间的区别。

难度:
  • 什么是 JavaScript 中的不可变对象的例子?
  • 不变性有什么优点和缺点?
  • 你如何在自己的代码中实现不变性?

可变对象 在创建之后是可以被改变的。

不可变对象 在创建之后是不可以被改变的。

  1. JavaScript 中,stringnumber 从设计之初就是不可变(Immutable)。
  2. 不可变 其实是保持一个对象状态不变,这样做的好处是使得开发更加简单,可回溯,测试友好,减少了任何可能的副作用。但是,每当你想添加点东西到一个不可变(Immutable)对象里时,它一定是先拷贝已存在的值到新实例里,然后再给新实例添加内容,最后返回新实例。相比可变对象,这势必会有更多内存、计算量消耗。
  3. 比如:构造一个纯函数
js
const student1 = {
  school: "Baidu",
  name: "HOU Ce",
  birthdate: "1995-12-15",
};

const changeStudent = (student, newName, newBday) => {
  return {
    ...student, // 使用解构
    name: newName, // 覆盖name属性
    birthdate: newBday, // 覆盖birthdate属性
  };
};

const student2 = changeStudent(student1, "YAN Haijing", "1990-11-10");

// both students will have the name properties
console.log(student1, student2);
// Object {school: "Baidu", name: "HOU Ce", birthdate: "1995-12-15"}
// Object {school: "Baidu", name: "YAN Haijing", birthdate: "1990-11-10"}
参考

内容仅供参考,难免有不恰当的地方,如果有问题欢迎及时反馈
部分内容来自网络,如果不慎侵犯您的权益,请联系我们,以便及时删除侵权内容