writable属性描述符控制对象属性值是否可被重新赋值需通过Object.defineProperty()设置设为false后属性值锁定赋值操作静默失败或抛TypeError且不可逆除非configurable为true。用 writable 属性描述符可以控制对象属性值是否可被重新赋值。它属于数据属性描述符必须配合 Object.defineProperty() 或 Object.defineProperties() 使用直接在字面量中声明的对象属性无法设置该描述符。设置 writable: false 后属性不可修改当 writable 设为 false该属性的值将被锁定后续任何直接赋值操作都会静默失败非严格模式或抛出 TypeError严格模式。即使属性存在且可访问也不能通过 obj.prop newValue 更改其值 不会影响属性是否可删除由 configurable 控制也不会影响是否可枚举由 enumerable 控制 例如注意不能用 obj.x 2 覆盖但 console.log(obj.x) 仍能读到原始值与 const 声明的区别writable: false 限制的是**对象某个属性的赋值行为**而 const 声明限制的是**变量绑定不可重新赋值**。两者作用层级不同const obj { x: 1 }; obj.x 2; —— 允许因为 obj 的属性默认是可写的 Object.defineProperty(obj, x, { value: 1, writable: false }); obj.x 2; —— 不允许触发写保护 const obj Object.freeze({ x: 1 }); —— 等价于对所有自有属性设 writable: false configurable: false修改 writable 需要 configurable: true一旦属性的 writable 设为 false就无法再通过 defineProperty 改回 true除非同时满足 configurable: true。 Mokker AI AI产品图添加背景