Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中销毁对象?_Javascript_Arrays_Object_Garbage Collection_Destroy - Fatal编程技术网

如何在javascript中销毁对象?

如何在javascript中销毁对象?,javascript,arrays,object,garbage-collection,destroy,Javascript,Arrays,Object,Garbage Collection,Destroy,我想知道如何正确地销毁Javascript中包含数组和其他数据的对象 例如(这是对象的初始状态): 在使用应用程序时,将添加提名.recipients对象以及其他数据元素。完成后,执行以下操作是否足以清除整个对象: acme.models.nomination = {}; 或者这是更好的(或过度): 我认为前面的语句(即acme.models.namignment={})已经足够了,因为这实际上使整个内容无法访问,因此有资格进行垃圾收集。不过,我想听听其他人对此的看法。顺便说一句,答案可以在现

我想知道如何正确地销毁Javascript中包含数组和其他数据的对象

例如(这是对象的初始状态):

在使用应用程序时,将添加提名.recipients对象以及其他数据元素。完成后,执行以下操作是否足以清除整个对象:

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;