如何为数组';javascript中的s元素

如何为数组';javascript中的s元素,javascript,arrays,object,Javascript,Arrays,Object,假设我在javascript中有一个对象数组: var obj0 = new Object(); var obj1 = new Object(); var obj2 = new Object(); var obj3= new Object(); var array = new Array(obj0,obj1,obj2,obj3); 如果我写: array[1] = null; 这将为我提供[obj0,null,obj2,obj3]为null的是数组大小写而不是对象本身;obj1不会在内存中

假设我在javascript中有一个对象数组:

var obj0 = new Object();
var obj1 = new Object();
var obj2 = new Object();
var obj3= new Object();

var array = new Array(obj0,obj1,obj2,obj3);
如果我写:

array[1] = null;
这将为我提供
[obj0,null,obj2,obj3]
为null的是数组大小写而不是对象本身;
obj1
不会在内存中真正为空


如何通过数组访问对象以使其为空?

您只需删除对该对象的所有引用,包括obj1引用。然后垃圾收集器将处理剩下的部分

但是,如果obj1变量是局部变量(就像代码段中显示的那样),则可以保持引用的原样。当封闭方法返回时,局部变量将被清除,随后,空对象也将被清除。

我认为“splice()”将有助于:


结果:
[obj0,obj2,obj3]

如果您尝试以这种方式编写它会怎么样

var array = new Array();

array[0] = new Object();
array[1] = new Object();
array[2] = new Object();
array[3]= new Object();

array[1] = null;

我在《粉碎》杂志上找到了一篇与你的问题相关的好文章

在JavaScript中强制垃圾收集是不可能的。你 我不想这样做,因为垃圾收集过程是 由运行时控制,它通常最清楚事情发生的时间 应该清理一下


正如Kpower评论的那样,写:

var array = [{}, {}, {}, {}];

当为任何数组单元格设置空值时,如:

array[1] = null;

这将有效地删除对象的引用,因此它将被垃圾收集。

您应该真正使用文本语法,例如:
var-array=[{},{},{},{},{}]Kpower,我想你说的是正确的解决方案!!如果我没有创建任何变量,那么对象就不会被引用,一旦数组单元格为空,那么一旦GC运行,对象就会消失。但对我来说,我并没有创建我试图为其设置空值的对象,所以它对我不起作用。我在我的应用程序中这样做是为了优化内存,我不知道在javascript中运行GC的频率有多高,所以这就是为什么我希望可以立即为对象设置空值。这只是一个例子,我想要设置空值的变量不是localK。然后应用上面的:)这将杀死数组单元格而不是对象感谢您的尝试,我使用了类似[obj0,null,obj2,obj3]的UpVoteName,对象仍然是活动的:)
   var array = new Array(new Object(),
                         new Object(),
                         new Object(),
                         new Object());
array[1] = null;