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

如何删除JavaScript对象中动态命名的属性?

问题原因与解决方案

你用Object.create()定义对象属性时,未显式设置configurable: true,该属性默认处于不可配置状态,导致delete操作无法生效。

当通过Object.create()的第二个参数定义属性时,所有属性描述符的默认值都是false,包括configurable、enumerable、writable。只有将configurable设为true,才能允许删除属性、修改属性描述符等操作。

修改后的代码如下:

function addPr() {
  let p = prop.value;
  employees = Object.create(Object.prototype, {
    [p]: {
      value: val.value,
      configurable: true // 开启属性可配置性
    },
  });
  console.log(employees);
  del.addEventListener("click", () => {
    delete employees[p];
    console.log(employees);
  });
}

如果你只是想快速创建支持删除的普通属性,也可以用更简洁的方式:

function addPr() {
  let p = prop.value;
  employees = {}; // 直接创建空对象
  employees[p] = val.value; // 赋值方式添加属性,默认可配置
  console.log(employees);
  del.addEventListener("click", () => {
    delete employees[p];
    console.log(employees);
  });
}

内容的提问来源于stack exchange,提问作者user14411985

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:52:05