2012-05-25 23 views
6

比方說,我創建了自己的帆布類:未使用的DOM元素會發生什麼?

this.canvas = document.createElement("canvas"); 

我用的畫布,畫一些東西,等等,但從來沒有在畫布添加到DOM樹。 當我完成後,我不再使用整個班級。

那麼當我刪除使用畫布的類,畫布還佔用內存嗎?我必須以某種方式刪除它嗎?

或者,作爲一個更一般的問題:未使用的元素不會再出現在DOM樹中或從未出現過(在網站中不可見)會發生什麼?他們會被垃圾收集和/或你可以加快一點,以提高性能?

+0

我不認爲瀏覽器會垃圾收集這些,因爲它永遠不會確定什麼時候可以將它注入到DOM中。 –

+3

如果他們一直很好,他們會進入DOM天堂,或者如果他們糟糕,他們會進入DOM地獄。 – Ashe

+0

+1讓我有趣;) – TheSHEEEP

回答

1

正如你已經正確地提到你自己,這不是關於DOM樹,它更多關於對象引用&垃圾收集器。

當您通過基礎對象刪除/刪除一個類時,所有現代收藏家都會照顧你。通過甚至不將節點插入到DOM中,您也不必擔心任何隱藏的引用。我見過幾個人也明確地設置<canvas>參考null也,但我想這是純粹的IE8偏執狂。

+0

聽起來不錯。感謝你的回答。我猜到了那麼多,但是肯定會好得多:) – TheSHEEEP