可以删除对象本身而不是引用吗?

6
var a = {
    "example" : true
};

var x = [a], y = [a];

delete x[0];

console.log(y);

在上面的代码中,是否可能删除 x 的引用而不是仅仅删除引用?

“delete a;” 是什么意思? - Krumelur
你想要解引用对象a - John Giotta
1
如果你想要手动内存管理,那就忘了吧。对象只有在垃圾回收器认为合适并且可以证明没有更多的引用时才会被删除,而不是早一秒。 - user395760
“删除对象本身”是什么意思?y会包含什么? - Ken
2个回答

10

这取决于垃圾收集器。只要对象还有引用,它就不会被垃圾回收。

如果您希望清理它,请确保没有更多的引用。

因此,回答您的问题,没有办法明确销毁一个对象。如果 ay[0] 仍然引用它,那么您无法从变量 x 进行销毁。

需要明确的是,x[0] 没有引用 a,它指向内存中与 a 引用相同的对象。


那么,如果不知道索引,就没有办法从 y 中删除 a 了吗? - glider
1
除了取消引用y数组中的所有项、迭代数组查找它(或使用支持的.indexOf()方法)外,没有其他办法。 - user113716

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接