假設我們有一個對象池(又名數組)。然後我們Constructor.apply(obj,arguments)。Javascript GC應用現有對象
var obj = objectPool[nextAvailableIndex];
obj.index = nextAvailableIndex;
nextAvailableIndex += 1;
Constructor.apply(obj, arguments);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這對現有的Obj有什麼影響?內存是否被重用?這是否有助於避免GC?它是不是基本上與新的一樣,還是相似但不同?
我應該把更多的代碼放在這裏。這是一個對象池。假設pool [100]不再需要,我們想重用它。所以var obj = pool [100]; ...; constructor.apply(obj,arguments);然後我們把obj放回池中[100]。需要回答的問題是:1)新的vs適用的,我們要重複使用記憶,還是要創造新的東西。如果是這樣,那麼對象池是一個沒用的想法,因爲它在應用時不會阻止GC。我沒有回答我的問題。也許我的糟糕,但似乎重新解釋的問題。 – FreddyNoNose
如果你使用'apply',那麼每次都使用同一個對象,但是每當你使用'new'時,就會創建一個新的對象。在這種情況下,如果您將obj放回池中,那麼您將重新使用內存,但是如果您具有零池的引用,那麼該池將被垃圾收集。 –
謝謝。我也曾想過,但是我發佈前一天的一位朋友說服我錯了。猜猜我對自己的信仰失去了信心。 – FreddyNoNose