首页 > 编程笔记

JS删除对象中的某个属性

在 JavaScript 中,如果要删除对象中的某个属性,则可以使用 delete 运算符,在 delete 后边使用属性访问语法来指定要删除的属性,删除成功会返回 true,失败则返回 false,代码如下:
const obj={a:1};
delete obj.a;     //true
obj.a;            //undefined
上边的示例还可以使用[]形式:
delete obj["a"];
同样会删除对象中的 a 属性。

delete 只能删除对象本身的属性,不能删除继承的属性和设置了 configurable 为 false 的属性,试图删除这些属性时 delete 会返回 false,其他情况则都返回 true,即使是删除不存在的属性。

判断属性是否还存在于对象中,可以使用 in 运算符,in 的左侧为要判断的属性名,右侧是对象的名字,如果该属性存在于该对象,包括继承下来的属性,in 运算符则会返回 true,否则返回 false。

例如上边示例中,在删除 a 属性后,可以使用 in 判断 a 是否还存在于 obj 对象中,代码如下:
"a" in obj;  //false
另外,因为数组也是对象,所以同样可以使用 delete 删除数组中的元素,该元素会被设置为空白,并且位置会保留,代码如下:
const arr=[1,2,3];
delete arr[1];  //true
arr;  //[1,empty,3]
需要注意的是,不能使用 delete 删除使用 var、let、const 定义的变量,也不能删除函数(但对象中的方法可以被删除)。

推荐阅读