理论问题
假设我有一个变量“test”,它被定义为可观察的:
var test = ko.observable("start");
之后的一些代码,我有时会调用一个函数:
test = ko.observable("pass n");
每次将一个新观察者与测试相关联时,它会被破坏,或者它会泄漏内存吗? 注意:我知道第二个代码应该
test("pass n");
我很好奇。
然后用var重新定义测试,比如第一行?
答案 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是一个好的开始。