JavaScript删除和清空对象属性

2018-9-16 16:34| 作者: admin| 查看: 318| 评论: 0|来自: 蚂蚁部落

本文介绍一下如何利用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));

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/16/163539u5666pppptffow65.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到对象的属性并没有被删除。

Object.keys()方法可以获取对象的可枚举自有属性名称。

具体用法可以参阅Object.keys()方法一章节。

一.删除对象指定属性:

非常简单的操作,使用delet运算符即可实现。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
let antzone = {
  webName: "蚂蚁部落",
  url:"www.softwhy.com",
  address:"青岛市南区",
  age:4
}
delete antzone.age;
console.log(Object.keys(antzone));

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/16/163650hcffa1zp9fkjczpa.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面的代码通过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));

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/16/163734xf8wo9hqwfgzggpc.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

由运行效果截图可以看到,对象中已经被清空。

三.并不是所有属性都是可以删除的:

(1).原型链继承的属性不能删除。

(2).被冻结或者密封对象的属性是不可以被删除的。

原型链这个非常好理解,因为继承的属性本质上不是当前对象自有,而是所有对象实例共享。

这个属性本质不是位于当前对象,而是在原型链某个对象之上,这怎么能删除。

关于被冻结和密封对象的属性不能被删除,可以参阅如下两篇文章:

(1).Object.seal()方法一章节。

(2).Object.freeze()方法一章节。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部