如何清除 JavaScript 中的对象

在 JavaScript 中清除对象

How to Clear an Object in JavaScript

使用for..in循环清除对象并删除其所有属性。该循环将遍历对象中的所有可枚举属性。在每次迭代中,使用delete运算符删除当前属性。

索引.js
const obj = {a: 'one', b: 'two'}; for (const key in obj) { delete obj[key]; } console.log(obj); // 👉️ {}

for…in
循环遍历对象的所有可枚举属性

可枚举属性是使用简单赋值(例如点.或方括号[] 赋值)添加到对象的属性。

默认情况下,使用该方法分配给对象的属性是不可枚举的,并且不会在循环Object.definedProperty中迭代。for...in

Object.defineProperty
方法主要由 3rd 方库创建

使用,而不是在日常代码中使用,因此
for...in循环很可能涵盖对象的所有属性。

重新分配包含该对象的变量,将其设置为空对象,性能要好得多。这只有在您使用关键字来声明对象时才有可能。 letvar
索引.js
let obj = {a: 'one', b: 'two'}; obj = {}; console.log(obj); // 👉️ {}

请注意,我们在声明变量let时使用了关键字。obj

let关键字允许我们重新分配变量请注意,const不能重新分配使用声明的变量。

在极不可能的情况下,您的对象包含不可枚举的属性,您可以使用以下方法清除对象。

索引.js
let obj = {a: 'one', b: 'two'}; Object.defineProperty(obj, 'color', { value: 'red', enumerable: false, // 👈️ defaults to false configurable: true, }); const allProperties = Object.getOwnPropertyNames(obj); console.log(allProperties); // 👉️ ['a', 'b', 'color'] allProperties.forEach(property => { delete obj[property]; }); console.log(Object.getOwnPropertyNames(obj)); // []

我们使用
Object.getOwnPropertyNames
方法获取对象的可枚举和不可枚举属性的数组。

我们使用
Array.forEach
方法迭代数组并使用
delete
运算符清除每个属性。

如前所述,最好使用let关键字并将变量重新分配给一个空对象。这是清除对象并让垃圾收集器完成其工作的最快方法。

进一步阅读

发表评论