假设我有一个对象:
var o1 = {
someKey: 'value'
};
还有一个引用第一个对象的对象:
var o2 = {
o1Ref: o1
};
还有一个第三个对象,它引用了第一个对象上的一个属性:
var o3 = {
o1propRef: o1.someKey
};
接下来,假设o2
被垃圾回收了。那么,在o3
上对o1.someKey
的引用是否会阻止o1
被回收?
同时,假设o1
更大一些,比如:
var o1 = {
someKey: 'value',
someBigValue: Buffer(2000000)
};
< p > o1 的未被引用的部分是否可以被收集,或者对象整体被收集?似乎第二个版本的 o1 中,o3 只是保持 o1.someKey 和 o1.someBigValue 可以被释放。同时,我确实意识到这可能因不同的实现而异。如果是这种情况,通常如何考虑最好呢?< /p >
o1.someKey
的值,而不是任何引用它的方式。 - T.J. Crowder