连接两个对象的内存有效方式是什么?如果使用两个具有相应索引值的数组存储对象,则该对象不会从内存中释放。
该实现应如下所示。
var obj ={};
var linkedobj = getLinkedObject(obj);
var obj2 ={}
var linkedobj2 = getLinkedObject(obj2);
最佳答案
对象是通用容器
如果您要做的只是将一个对象与另一个对象相关联,那为什么不让它们指向另一个对象呢?
var obj = {};
var obj2 = {};
obj.linkedObject = obj2;
obj2.linkedObject = obj;
这是正常的事情,不会对内存造成不良影响。
释放内存
如果您要保存一个充满对象引用的表,那是正确的,直到对象的所有活动引用都消失了,该对象才会消失。 Javascript具有垃圾回收器,只要您的表或数组具有良好的引用,它就会为您提供内存支持。如果将对象提供给表,然后希望将其完全从内存中删除,则也可以将其从表中删除。您也可以删除该表,假设它不需要容纳其他任何东西。
如果确定要使
getLinkedObject
函数返回另一个对象的对象,则仍可以允许这些对象各自保留关联引用。function getLinkedObject(anObject) {
return anObject.linkedObject;
}
这可能会伴随一个同行:
function linkObjects(anObject, anotherObject) {
anObject.linkedObject = anotherObject;
anotherObject.linkedObject = anObject;
}
这样做使您不必担心内存管理,这在Javascript(带有垃圾收集器的高级动态环境)中通常是合适的。