2012-04-28 90 views
0

我用new關鍵字創建我的JavaScript「類」的實例,並調用構造函數如:new myStuff.DoSomething();以獲取它的一個實例。有時候在需要的時候,我給這個實例一個參考,例如:var myObj = new myStuff.DoSomething();JavaScript,沒有參考的對象實例

我來思考內存管理:當JS沒有被使用時,JS是否清理沒有引用的對象? - 用相同的方式清理那些帶有引用的文件。那麼在一個被殺死的對象中的所有事件處理程序呢,他們還活着嗎?

例如:如果我使用new關鍵字創建了一個可拖動的窗口,並且不引用該對象,然後附加事件處理程序等。然後我決定從DOM中刪除窗口。我怎樣才能確保實際的對象也被刪除?

+0

你是什麼意思_「實際的對象」_在_「我怎樣才能確保實際的對象也被刪除?」_什麼「實際的對象?」 – 2012-04-28 14:33:23

+0

對於我的意思是,使用new關鍵字創建的實例。在這個例子中,創建了DOM節點,但它自己的「this」對象就是我的意思;該實例。 – user1121487 2012-04-28 14:36:59

+0

如果你可以在你的例子中包含一些代碼來明確你的要求,這將是有幫助的。幾乎可以肯定的答案是「是的,物體被清理乾淨。」 – 2012-04-28 14:43:50

回答

2

當JS沒有被使用時,JS是否清理沒有引用的對象?

是。 JavaScript是一種garbage collected語言。

那麼一個被殺死的對象中的所有事件處理程序呢,它們還活着嗎?

這取決於,因爲我們現在談論的是DOM,而不僅僅是JS作爲一種語言。某些DOM實現(例如在較舊版本的IE中)是notorious for leaking memory in this way。其他瀏覽器/ DOM實現可能沒有這樣的錯誤。