真正的方法来删除对象的属性(删除vs null null与undefined)

真正的方法来删除对象的属性(删除vs null null与undefined)

问题描述:

我有一个很大的对象key-value对(如dictionary)。发生什么事情时,我想从object中删除key-value。我知道delete performance issue,并将未使用的密钥设置为undefined/null看起来是一种很好的方式,但我仍然担心GC。我可以将object设置为undefinednull,但关键(property)仍然站在那里并保留一些memory。当我delete键,它消失,所以我猜这意味着GCfree密钥的memory。所以我很难找到密钥的真正解决方案,从大集合object。也许一些建议或参考?真正的方法来删除对象的属性(删除vs null null与undefined)

例子:

var dic = {}; 

dic.a = 1234; 
dic.b = "hello"; 
dic.c = "!#$"; 

delete dic.a;   // { b: "hello", c: "!#$" } 
dic.b = undefined; // { b: undefined, c: "!#$" } 
dic.c = null;   // { b: undefined, c: null } 
+0

的属性设置为一个'undefined'或'null'值不会删除它只是使属性的属性是特定值。所以现在你正在混合使用空/未定义检查的属性定义检查。 – MinusFour

+0

@MinusFour是的,这就是为什么我担心GC。我想要财产被垃圾收集和释放。 – MFatihMAR

+0

您在删除属性时遇到了哪些性能问题?离开属性时遇到什么内存问题? – Matt

有关使用Map而不是脂肪JS对象是什么?

var dic = new Map() 

dic.set("a", 1234); 
dic.set("b", "hello"); 
dic.set("c", "!#$"); 

dic.delete("a"); 

根据你的使用情况,您也可以考虑使用Weak Maps

+0

这是一种解决方法,不是“安全地从物体上移除财产”的解决方案。不管怎么说,还是要谢谢你 :) – MFatihMAR