如何在javascript中销毁对象?
我想知道如何正确地销毁Javascript中包含数组和其他数据的对象 例如(这是对象的初始状态): 在使用应用程序时,将添加提名.recipients对象以及其他数据元素。完成后,执行以下操作是否足以清除整个对象:如何在javascript中销毁对象?,javascript,arrays,object,garbage-collection,destroy,Javascript,Arrays,Object,Garbage Collection,Destroy,我想知道如何正确地销毁Javascript中包含数组和其他数据的对象 例如(这是对象的初始状态): 在使用应用程序时,将添加提名.recipients对象以及其他数据元素。完成后,执行以下操作是否足以清除整个对象: acme.models.nomination = {}; 或者这是更好的(或过度): 我认为前面的语句(即acme.models.namignment={})已经足够了,因为这实际上使整个内容无法访问,因此有资格进行垃圾收集。不过,我想听听其他人对此的看法。顺便说一句,答案可以在现
acme.models.nomination = {};
或者这是更好的(或过度):
我认为前面的语句(即acme.models.namignment={}
)已经足够了,因为这实际上使整个内容无法访问,因此有资格进行垃圾收集。不过,我想听听其他人对此的看法。顺便说一句,答案可以在现代浏览器环境中给出,比如说2012年1月后的浏览器,因为我知道内存管理在过去有点不一致。我认为-运算符就是您要寻找的:
delete acme.models.nomination;
请注意,这会删除对象属性(因此会删除一个引用,而不一定是所有引用)。不一定是OP需要的。@ MICH149考虑下面的代码片段:‘var x= {};x、 y={a:1,b:function(){};删除x.y;//x、 y现在未定义`这意味着属性a和b有资格进行垃圾收集=>all good。如果X.Y中有一行元素,那么请考虑下面的代码片段:“var x={};x、 y={a:1,b:function(){},c:[1,2,3,4,5]};删除x.y;//x、 y现在未定义`如果删除父属性,则所有子项都有资格进行垃圾收集,因为所有子项都不可访问。你同意吗?感谢您勾选这一条:-这篇文章在下面被引用:-听起来我们应该使用null来代替。
acme.models.nomination.privacy = undefined;
acme.models.nomination.awardType = {};
acme.models.nomination.recipients = {};
acme.models.nomination = {};
delete acme.models.nomination;