2015-05-25 56 views
0

中的理論問題Knockout重新定義可觀察內存泄漏?

比方說,我哈瓦變量「測試」,其定義爲可觀察到的:

var test = ko.observable("start"); 

一些代碼後,我打電話有時一個函數,它的作用:

test = ko.observable("pass n"); 

每當一個新的觀測數據與測試相關聯或者它泄漏內存時,前一個觀察數據就會被銷燬? 注:據我瞭解,第二碼應該做

test("pass n"); 

我只是好奇。

那麼用var重新定義測試,就像在第一行一樣?

回答

2

這如何精確地工作取決於JavaScript的實際實現,特別是它的垃圾收集方式。你問一個簡短而看似簡單的問題,其實這是一個非常複雜的話題。查看out this related SO question以查看此冰山的一角。

然而,短短的版本,據我所知,如果在一般都有這樣的代碼:

var test = ko.observable("abc"); 
test = ko.observable("xyz"); 

然後有可能是的ko.observable("abc")結果沒有參考了,而且觀察到將受垃圾收集。

基因敲除對這個簡單的例子沒有太多的關係。如果你有訂閱飛行等事情,事情可能會變得非常棘手。如果你想知道更多關於你的知識,你需要提出一個更具體的具體問題,或者通常閱讀KO和內存問題。 This blog post by RP Niemeyer是一個好的開始。