在Javascript中重新分配对象变量时,原始对象会发生什么?

时间:2016-05-14 21:06:18

标签: javascript class variables object declaration

我们首先要说:

class AI {
// class properties/methods here
}
var chappie = new AI;

然后在使用变量后,如果我想通过调用:

重置它
chappie = new AI;

原始对象会发生什么?是垃圾收集了吗?这是允许的,还是有更好的方法来“重置”变量?

1 个答案:

答案 0 :(得分:1)

如果没有对象的更多引用,那么该对象最终将被垃圾收集。

如果你最初有1个引用,现在你没有引用,最终会释放内存。

var obj = { };
var a = obj;
var b = obj;
a = null;

还有一个参考,所以没有任何改变。

关于另一个问题:“我还能如何重置变量?” 我的后续问题是“为什么?”

如果您希望GC启动,那么您可以将var设置为nullundefined或其他(假设它是最后一次引用对象)。

...否则,当任何事物不再需要var时,GC也会清理var本身。 如果已删除的var是对值的最后一个引用,则该值将被清除。