2014-04-12 32 views
0

想象一下,我做這樣的事情:通「這個」作爲參數

OBJ1的一個實例添加到全局App對象中的命名空間部分。

APP.namespace.obj = new Obj1(); 

從OBJ1構造,我實例另一個目的是這樣的:

​​

這被作爲參數傳遞(指向OBJ1)。 在OBJ 2,我設置了傳遞的對象作爲一個屬性:

This.someobj = options.someobj; 

它讓我呼籲OBJ1原型方法。 這些對象中的任何一個都被垃圾回收了嗎? 當我不再需要這些物體時,我該如何銷燬這些物體?

我這樣做的範圍是使控制器(obj1)可以對視圖(obj2)進行操作。
但我想委託管理其他視圖的方法+從控制器(obj1)到後端的調用。

回答

0

據我所知,只要APP.namespace.obj存在,他們不能被垃圾收集。

也許在視圖和控制器之間使用發佈/訂閱模式(觀察者模式)。這種方式應該消除緊密的耦合。

+0

考慮到這是一個單頁面應用程序,我可以看到這是一件非常糟糕的事情。當一個名字將他的全局APP對象命名爲Backbone中的模型/視圖時,我認爲它註定會隨着時間的推移而被超載。那可能是對的嗎? – Trace

+0

那麼,據我所知,'Backbone'不適合長時間生活的單頁應用程序,因爲它很難擁有清晰的內存。相反,'Ember.js'和'ExtJs'提供了一個編程模型,它應該能夠防止內存問題,併爲您處理大部分內存管理。也許研究他們如何解決這個問題可以幫助你。 – Andrei

+0

如果單個頁面應用程序註定不會長時間運行,那麼在我看來,內存不應該是那麼大的問題。 – Andrei