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

When object variable is reassigned in Javascript, what happens to the original object?

假设一开始我们将:

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

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

chappie = new AI;

原始对象发生了什么?它会收集垃圾吗?这是允许的,还是有更好的方法 "reset" 变量?

如果不再有对某个对象的引用,那么该对象最终将被垃圾回收。

如果您原来有 1 个引用,现在有 none,最终内存将被释放。

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

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

关于另一个问题:"How else would I reset a variable?" 我的后续问题是 "Why?"

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

...否则,当 var 不再被任何东西需要时,GC 也会自己清理 var。 如果被删除的 var 是对某个值的最后引用,那么该值将被清除。