delete操作符可删除对象自有属性,成功返回true,但对不可配置属性无效;赋值undefined/null仅清空值;批量删除需循环或解构取剩余属性。

用 delete 操作符可以删除对象的某个属性。
使用 delete 删除属性
delete 是专门用于移除对象自有属性的操作符,删除成功返回 true(即使属性不存在也通常返回 true),但不会影响原型链上的同名属性。
- 语法简单:
delete obj.key或delete obj["key"] - 只对对象的**自有属性**有效,无法删除继承来的属性
- 删除后,该属性在
for...in循环和Object.keys()中不再出现
注意不可配置属性无法删除
如果属性是通过 Object.defineProperty() 设置为 configurable: false,则 delete 会失败(严格模式下报错,非严格模式静默返回 false)。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 例如:
Object.defineProperty(obj, "x", { value: 1, configurable: false }) - 此时
delete obj.x返回false,且属性依然存在
替代方案:赋值为 undefined 或 null
有时你只是想“清空”属性值而非真正删除,可直接赋值:
-
obj.key = undefined—— 属性仍存在,但值为undefined -
obj.key = null—— 属性仍存在,值为null - 这种方式不影响属性的可枚举性、可配置性等特性
批量删除多个属性
没有原生批量删除语法,但可以用循环或解构配合剩余对象模拟:
- 循环删除:
["a", "b"].forEach(key => delete obj[key]) - 更安全的做法是创建新对象(推荐用于不可变场景):
const { a, b, ...rest } = obj,rest就是剔除了a和b的新对象
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










