使 JS 对象属性变成只读

三葉Leaves Author

在 JavaScript 中,你可以使用 Object.defineProperty()Object.freeze() 方法来将对象的属性变为只读。

1. 使用 Object.defineProperty() 设置属性为只读

你可以使用 Object.defineProperty() 来定义一个只读属性。通过设置 writablefalse,可以确保属性不可被修改。

1
2
3
4
5
6
7
8
9
10
11
const obj = {};
Object.defineProperty(obj, 'name', {
value: 'Alice',
writable: false, // 设置属性为只读
configurable: false, // 不能删除或重新配置这个属性
enumerable: true // 是否可以通过循环遍历这个属性
});

console.log(obj.name); // 'Alice'
obj.name = 'Bob'; // 尝试修改
console.log(obj.name); // 仍然是 'Alice'

2. 使用 Object.freeze() 冻结整个对象

Object.freeze() 方法会冻结对象,使得对象无法再被修改(包括添加、删除属性,或修改已有属性的值)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const obj = {
name: 'Alice',
age: 25
};

Object.freeze(obj);

obj.name = 'Bob'; // 尝试修改
console.log(obj.name); // 仍然是 'Alice'

obj.city = 'New York'; // 尝试添加新属性
console.log(obj.city); // undefined

delete obj.age; // 尝试删除属性
console.log(obj.age); // 25

不过需要注意,Object.freeze() 会冻结整个对象,所有属性都无法修改。如果你只想冻结某个属性,而保留其他属性可变,使用 Object.defineProperty() 会更灵活。

  • 标题: 使 JS 对象属性变成只读
  • 作者: 三葉Leaves
  • 创建于 : 2025-07-23 00:00:00
  • 更新于 : 2025-08-13 16:31:27
  • 链接: https://blog.oksanye.com/5533629f37b3/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论