在 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
循环很可能涵盖对象的所有属性。
重新分配包含该对象的变量,将其设置为空对象,性能要好得多。这只有在您使用或关键字来声明对象时才有可能。
let
var
索引.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
关键字并将变量重新分配给一个空对象。这是清除对象并让垃圾收集器完成其工作的最快方法。