You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JavaScript中已定义的对象属性描述符?

如何修改已设置writable: false的对象属性描述符?

JavaScript里没有专门的Object.updatePropertyDescriptor方法,但直接再次调用Object.defineProperty()就能修改已存在属性的描述符,核心取决于该属性的configurable配置项:

情况1:属性的configurable为true(默认值)

如果第一次定义属性时未特意设置configurable: false,就可以直接用Object.defineProperty()覆盖原有描述符:

const obj = {}
// 初始定义,configurable默认是true
Object.defineProperty(obj, "y", {
  writable: false,
  value: "You can't overwrite me"
})

// 再次调用修改writable和value
Object.defineProperty(obj, "y", {
  writable: true,
  value: "Now you can overwrite me"
})

obj.y = "Hallo again"
console.log(obj.y) // 输出 "Hallo again"

情况2:属性的configurable为false

如果第一次定义时明确设置了configurable: false,那之后就无法修改该属性的任何描述符,也不能删除属性,再次调用Object.defineProperty()会抛出错误(严格模式下):

const obj = {}
Object.defineProperty(obj, "y", {
  writable: false,
  configurable: false,
  value: "You can't change me at all"
})

// 尝试修改会报错
Object.defineProperty(obj, "y", {
  writable: true
})

内容的提问来源于stack exchange,提问作者Islam Y-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:01:00