(JavaScript)关于const 对象的属性

75 阅读2分钟

const的介绍

在 JavaScript 中,const 关键字用于声明常量变量。常量变量一旦被赋予值后,就不能再被重新赋值。

除了声明常量之外,它也可以用于声明对象。在这种情况下,const 声明的对象是一个常量对象,其引用不能被重新分配,但对象属性可以被修改。 例子如下:

const person = {
  name: 'Alice',
  age: 30
};

person.name = 'Bob'; // 可以修改对象属性
person.address = '123 Main St'; // 可以添加新属性

console.log(person);

在上面的示例中,person 是一个使用 const 声明的常量对象。虽然我们不能将 person 指向另一个对象,但我们可以修改它的属性或添加新属性。

总结来说,const 对象是一个使用 const 声明的对象,它的引用是常量,不可重新分配,但对象本身的属性可以修改。如果你希望完全防止对象属性的修改,可以考虑使用 Object.freeze() 方法,它会冻结对象,使其属性变得不可修改。

如何冻结部分属性而不是整个对象?

JavaScript 中的对象冻结是一个全局性操作,这意味着你只能将整个对象冻结,而不能选择性地冻结对象的某些属性而保持其他属性可变。一旦对象被冻结,所有的属性都将变为不可修改。

const person = {
  name: 'Alice',
  age: 30
};

Object.freeze(person); // 冻结整个对象

person.name = 'Bob'; // 这个操作会失败,不会修改属性

如果你需要部分冻结,你可以考虑使用不同的数据结构,例如将属性存储在不同的对象中,然后只冻结你希望保持不变的对象。这样,你可以选择性地冻结某些属性而不影响其他属性。例如:

const person = {
  info: { name: 'Alice', age: 30 },
  address: { city: 'New York', zip: '10001' }
};

Object.freeze(person.info); // 冻结 info 对象

(ps:这种方式本质上还是冻结了一整个对象)