gpt4 book ai didi

javascript - Backbone.js 中的内存管理

转载 作者:行者123 更新时间:2023-11-30 08:33:18 25 4
gpt4 key购买 nike

考虑以下几点:

    SomeView = Backbone.View.extend({
render0: function () {
var view0 = new View0();
view0.setElement("#right-block");
view0.render();
},
render1: function(event) {
var view1 = new View1();
view1.setElement("#right-block");
view1.render();
},

});

如果我调用 render0() 然后调用 render1,对象 view0 会发生什么?我是否必须明确销毁旧 View ?

最佳答案

只要 DOM 元素 #right-block 存在,您的 view0 就会保留在内存中。因为 DOM 元素上的事件处理程序指向 View 的方法,所以它不会被垃圾回收。

理想情况下,您应该调用 view0.remove(),这将从 DOM 中删除元素,同时调用 stopListening()

但在您的示例代码中,如果您这样做,元素 #right-block 将从 DOM 中删除,并且 view1.setElement("#right-block"); 将无法按预期工作。

在这种情况下,尝试调用 view0.undelegateEvents(); view0.stopListening();,如果没有其他引用 View 实例,它将被垃圾收集

关于javascript - Backbone.js 中的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34761949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com