我想使用Backbone.js進行一些事件處理,但我對循環引用&內存管理沒有信心。比方說,我有一個名爲EventStation一些靜態事件源 - 所以,在腳本我說的開始:Backbone.js事件和內存管理
var source = new EventSource();
source
是爲了活頁的使用壽命,這很好。現在,我也有一個事件消費者:
var EventConsumer = Backbone.Model.extend({
initialize: function(params) {
source.on("some_event",this.onSomeEvent,this);
}
});
function later() {
var consumer = new EventConsumer();
// consumer now gets leaked... (I think)
}
我打電話later()
在某些時候 - 並在年底,我不再有任何消費者訪問,除非我去通過source
的內部周圍挖。我想我需要一些新的功能添加到EventConsumer
,像
cleanup: function() {
source.off("some_event",this.onSomeEvent,this);
}
然後調用在later()
結束。
這似乎......並不像我想要的那麼幹淨。有什麼方法可以做得更好嗎?如果我使用DOM事件,這會處理不同嗎?
不夠公平 - 我想這將不得不這樣做。 – Daniel 2012-07-06 16:39:06