本文介绍一下如何利用JavaScript删除对象中的属性。
这是非常基础简单的操作,可能刚接触JavaScript的朋友会产生一些误操作。
首先看一段代码实例:[JavaScript] 纯文本查看 复制代码let antzone = {
webName: "蚂蚁部落",
url:"www.softwhy.com",
address:"青岛市南区",
age:4
}
antzone.webName="";
antzone.age=undefined;
可能以为将对象属性值设置为空或者undefined等表示空的值就是删除属性。
然而事实仅仅是将属性值设置为空或者undefined,属性依然存在。
代码实例如下:[JavaScript] 纯文本查看 复制代码运行代码let antzone = {
webName: "蚂蚁部落",
url:"www.softwhy.com",
address:"青岛市南区",
age:4
}
antzone.webName="";
antzone.age=undefined;
console.log(Object.keys(antzone));
代码运行效果截图如下:
![]()
可以看到对象的属性并没有被删除。
Object.keys()方法可以获取对象的可枚举自有属性名称。
一.删除对象指定属性:
非常简单的操作,使用delet运算符即可实现。
代码实例如下:[JavaScript] 纯文本查看 复制代码运行代码let antzone = {
webName: "蚂蚁部落",
url:"www.softwhy.com",
address:"青岛市南区",
age:4
}
delete antzone.age;
console.log(Object.keys(antzone));
代码运行效果截图如下:
![]()
上面的代码通过delete运算符可以删除age属性。
并不是将age属性值赋值为空或者undefined等,而是切切实实把它从对象中删除。
二.清空对象属性:
操作也非常简单,通过循环遍历挨个删除即可。
代码实例如下:[JavaScript] 纯文本查看 复制代码运行代码let antzone = {
webName: "蚂蚁部落",
url:"www.softwhy.com",
address:"青岛市南区",
age:4
}
for(let key in antzone){
delete antzone[key];
}
console.log(Object.keys(antzone));
代码运行效果截图如下:
![]()
由运行效果截图可以看到,对象中已经被清空。
三.并不是所有属性都是可以删除的:
(1).原型链继承的属性不能删除。
(2).被冻结或者密封对象的属性是不可以被删除的。
原型链这个非常好理解,因为继承的属性本质上不是当前对象自有,而是所有对象实例共享。
这个属性本质不是位于当前对象,而是在原型链某个对象之上,这怎么能删除。
关于被冻结和密封对象的属性不能被删除,可以参阅如下两篇文章:
|