>[danger]如何避免一个对象的属性被修改? 在 JavaScript 中,你可以使用不同的方式来设置对象的属性为不可修改。以下是其中三种常用的方法: 1. 使用 `Object.defineProperty()` 或 `Object.defineProperties()` 方法:这两个方法可以用来定义或修改对象的属性,并且可以通过设置属性描述符的相关选项来控制属性的特性。通过将 `writable` 设置为 `false`,你可以将属性设置为不可修改。 ```javascript const obj = {}; Object.defineProperty(obj, 'propertyName', { value: 'propertyValue', writable: false, // 将属性设置为不可修改 }); obj.propertyName = 'newValue'; // 尝试修改属性,但不生效 console.log(obj.propertyName); // 输出: propertyValue ``` 2. 使用 `Object.freeze()` 方法:`Object.freeze()` 方法可以冻结一个对象,使其属性变为不可修改(包括值和属性的可配置性)。一旦对象被冻结,任何对其属性进行修改的尝试都将被忽略。 ```javascript const obj = { propertyName: 'propertyValue' }; Object.freeze(obj); // 冻结对象 obj.propertyName = 'newValue'; // 尝试修改属性,但不生效 console.log(obj.propertyName); // 输出: propertyValue ``` 3. 使用 ECMAScript 6 的类和 `get` 访问器:在类中定义属性时,可以使用 `get` 访问器而不提供 `set` 访问器。这会使该属性成为只读属性,不可修改。 ```javascript class MyClass { constructor() { this._propertyName = 'propertyValue'; } get propertyName() { return this._propertyName; } } const obj = new MyClass(); obj.propertyName = 'newValue'; // 尝试修改属性,但不生效 console.log(obj.propertyName); // 输出: propertyValue ``` 这些方法可以将对象的属性设置为不可修改。你可以根据实际需求选择合适的方法。