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

在JavaScript中,能否解构包含"delete"属性的对象?

在JavaScript中解构含"delete"属性的对象

当然可以!不过因为delete是JavaScript的保留关键字,你直接在解构语法里把它当标识符用会触发语法错误,得稍微调整写法就能解决这个问题。

为什么原代码会报错?

JavaScript规定,像delete、class、function这类保留关键字不能直接作为变量名、函数参数名或者解构模式里的标识符使用,所以你原构造函数的写法会被引擎判定为非法语法。

解决方案1:使用解构别名

解构的时候给delete属性起一个合法的别名,之后再把别名的值赋值给实例的delete属性:

class MyClass {
  constructor({ prop1, prop2, delete: deleteProp, prop4 }) {
    this.prop1 = prop1;
    this.prop2 = prop2;
    this.delete = deleteProp;
    this.prop4 = prop4;
  }
}

这种方式既保留了原对象的属性名,又完美避开了保留字的限制。

解决方案2:单独提取保留字属性

如果觉得别名写法有点绕,也可以先解构其他非保留字属性,再通过对象直接访问的方式获取delete属性:

class MyClass {
  constructor(options) {
    const { prop1, prop2, prop4 } = options;
    this.prop1 = prop1;
    this.prop2 = prop2;
    this.delete = options.delete;
    this.prop4 = prop4;
  }
}

测试验证

不管用哪种方法,都能正常实例化并获取到delete属性的值:

const testObj = { prop1: 'value1', prop2: 'value2', delete: true, prop4: 'value4' };
const instance = new MyClass(testObj);
console.log(instance.delete); // 输出: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:21