连接两个对象的内存有效方式是什么?如果使用两个具有相应索引值的数组存储对象,则该对象不会从内存中释放。

该实现应如下所示。

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(带有垃圾收集器的高级动态环境)中通常是合适的。

10-05 21:05
查看更多