Knockout Redefine observable - 内存泄漏?

时间:2015-05-25 10:53:40

标签: knockout.js memory-leaks observable

理论问题

假设我有一个变量“test”,它被定义为可观察的:

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

之后的一些代码,我有时会调用一个函数:

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

每次将一个新观察者与测试相关联时,它会被破坏,或者它会泄漏内存吗? 注意:我知道第二个代码应该

test("pass n");

我很好奇。

然后用var重新定义测试,比如第一行?

1 个答案:

答案 0 :(得分:2)

这是如何精确地工作取决于JavaScript的实际实现,特别是它进行垃圾收集的方式。你问一个简短而看似简单的问题,实际上这是一个非常复杂的话题。检查out this related SO question以查看这个冰山的尖端。

然而,简短的短版本,AFAIK,如果你一般有这种代码:

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

然后可能不会再引用ko.observable("abc")的结果,并且可观察的对象将被垃圾收集。

Knockout与这个简化的例子没什么关系。如果您有订阅的话,事情可能会变得更加棘手,等等。如果您想了解更多信息,您需要提出更具体,具体的问题,或者一般性地阅读有关KO和内存问题的信息。 This blog post by RP Niemeyer是一个好的开始。