将对象重置为空对象,在非线性时间内保持引用完整
Reset object to empty object keeping references intact in non-linear time
假设obj1
只有可枚举的属性:
var obj1 = { a: 1, b: 2, c: 3 };
然后创建obj2
,其中包含对obj1
的引用:
var obj2 = obj1;
obj1 === obj2; // true
在某些时候,我想将obj1
重置为空对象:
for (key in obj1) {
delete obj1[key];
}
obj1 === obj2; // true
但是我想避免迭代所有的属性:
obj1 = {};
obj1 === obj2; // false (this obviously doesn't work)
有其他解决方案吗?
如果您在数据模型上有灵活性,那么将实际属性存储在子对象中:
var obj1 = {theData: { a: 1, b: 2, c: 3} };
然后你可以用obj1.theData = {}
重置属性。
当然,这意味着访问任何属性都会导致额外的"跳",因此根据访问数据(读或写)的频率与重置对象的频率,您可能最好保留delete
循环。
除此之外,我不相信你可以重置一个对象,就像你可以重置一个数组(通过a.length=0
)。
相关文章:
- 如何获得一个只有时间的moment.js日期对象
- 使用moment.js获取时间分区的偏移日期对象
- JavaScript JSON关联对象键和值都作为日期时间戳
- 获取本地时间的JS日期,日期对象中没有时区详细信息
- 将某个时间格式转换为日期对象
- 时间-日期对象JavaScript getUTCMilliseconds
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- 时间滑翔机对象始终保持空且未定义
- 如何按天、周、月对具有时间戳属性的对象进行分组
- AngularJS,如何将多个输入组合到一个ng模型中?具体来说,将日期、时间和时区输入组合到日期时间对象中
- 用户如何获取两个时间戳之间的对象
- 从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
- 如何将 unix 时间戳转换为 JavaScript 日期对象(考虑时区)
- 我的无引用 JavaScript 对象存在在哪里以及存在多长时间
- Svg与Canvas以及圆形对象的渲染时间
- 为什么日期对象的时间没有改变?我怎样才能改变它
- 如何使用日期对象在特定时间激活音频文件
- javascript多个对象实例的时间戳相同
- 为什么keen.io对象时间线默认为一天
- Round moment.js对象时间到最接近30分钟的间隔