JavaScript 如何删除对象属性

你是不是有过这样的经历:整理手机相册时,不小心误存了一张无关的截图,或者想把旧的联系人列表里已经搬家的朋友信息删掉——其实在写代码时,我们也常常要“清理”不需要的内容,比如把 JavaScript 里对象里没用的属性删掉。

很多刚学编程的朋友可能会先想到“把属性的值设成 null 或者 undefined”,就像把旧文件挪去回收站,以为删了就完了,但其实这更像把文件藏到了回收站里,它还占着位置,还能被访问到。要真的彻底删掉,得用专门的方法。

JavaScript 如何删除对象属性

最常用的方法:delete 运算符

这是 JavaScript 里专门用来删除对象属性的工具,就像你在电脑上右键点文件选“删除”一样简单。

举个生活化的例子:假设你有一个装满零食的小收纳盒(对象),里面有“巧克力”“薯片”“饼干”三个属性,对应你买的零食。如果不想吃“薯片”了,想把它从收纳盒里拿出去,就可以用 delete 运算符:

`javascript

// 先创建一个装零食的对象

const snackBox = { 巧克力: '黑巧', 薯片: '番茄味', 饼干: '苏打' };

// 用delete删除薯片属性

delete snackBox.薯片;

// 现在打印收纳盒,就没有薯片了

console.log(snackBox); // 输出:{ 巧克力: '黑巧', 饼干: '苏打' }

`

如果用点号写属性,就直接写在 delete 后面;如果属性名有空格或者是变量,就得用方括号的形式,比如 delete snackBox['草莓干']; 或者 const snackName = '薯片'; delete snackBox[snackName];。

这里要注意一个小细节:如果属性是用 Object.defineProperty 设成了“不可删除”的,或者这个属性是对象自带的(不是你自己加的,比如数组的 length 属性),delete 就会失效,就像收纳盒上的固定隔板,没法拆。

另一种思路:创建新对象(适合不想改原对象的情况)

有时候你不想破坏原来的收纳盒,只是想拿一个新的、没有薯片的零食盒,这时候可以用展开运算符,把不需要的属性排除掉。

还是用刚才的零食盒例子:

`javascript

const snackBox = { 巧克力: '黑巧', 薯片: '番茄味', 饼干: '苏打' };

// 用展开运算符,把除了薯片之外的属性放进新对象

const newSnackBox = (({ 薯片, ...rest }) => rest)(snackBox);

console.log(newSnackBox); // 输出:{ 巧克力: '黑巧', 饼干: '苏打' }

`

这种方法的好处是原来的对象不会被修改,就像你复制了一份收纳盒,在副本里调整,原来的还留着。不过它是浅拷贝,如果属性里还有嵌套的对象,修改新对象的嵌套属性还是会影响原对象。

两种方法怎么选?

如果只是简单删除自己加的属性,用 delete 就够了,代码更短,适合临时调整对象;如果要保留原对象的完整性,或者处理的是常量对象(比如用 const 定义的),用展开运算符生成新对象更安全,避免不小心改到不该改的地方。

下次你想清理 JavaScript 对象里的“无用零食”,就可以根据需要选对应的方法啦。

上一篇 JavaScript 如何处理异步