当在 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 设置为 null
或 undefined
或其他任何值(假设这是最后一次引用对象)。
...否则,当 var 不再被任何东西需要时,GC 也会自己清理 var。
如果被删除的 var 是对某个值的最后引用,那么该值将被清除。
假设一开始我们将:
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 设置为 null
或 undefined
或其他任何值(假设这是最后一次引用对象)。
...否则,当 var 不再被任何东西需要时,GC 也会自己清理 var。 如果被删除的 var 是对某个值的最后引用,那么该值将被清除。