如何在 JavaScript 中清除对象
使用 for..in
循环清除对象并删除其所有属性。 循环将遍历对象中的所有可枚举属性。 在每次迭代中,使用 delete
运算符删除当前属性。
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
方法主要由第三方库创建者使用,而不是在日常代码中使用,因此 for...in
循环很可能涵盖我们对象的所有属性。
重新分配包含对象的变量,将其设置为空对象,性能要高得多。 这只有在我们使用 let 或 var 关键字声明对象时才有可能。
let obj = {a: 'one', b: 'two'};
obj = {};
console.log(obj); // ?️ {}
请注意,我们在声明 obj 变量时使用了 let 关键字。
let
关键字允许我们重新分配变量。 请注意,使用const
声明的变量不能重新分配。
在我们的对象包含不可枚举属性的极不可能的情况下,我们可以使用以下方法来清除对象。
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
关键字并将变量重新分配给空对象。 这是清除对象并让垃圾收集器完成其工作的最快方法。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。