0
我正在实现单页面应用程序。Javascript在AJAX加载后从内存清除对象
我有一个容器div(<div id="container"/>
),其中我使用AJAX
加载html内容。
// function that is overwritten by loadMenu functions
// and gets called before loading a new section
function unbindPreviousSection() { };
// load contacts
function loadContactsMenu() {
unbindPreviousSection();
unbindPreviousSection = function() { };
$.get("/Home/Contacts", function (data, status) {
if (status === "success") {
$("#content").html(data);
contactsMenu.bind();
unbindPreviousSection = contactsMenu.unbind;
}
});
};
// load profile
function loadProfileMenu() {
unbindPreviousSection();
unbindPreviousSection = function() { };
$.get("/Home/Profile", function (data, status) {
if (status === "success") {
$("#content").html(data);
unbindPreviousSection = function() {
// specific unbind methods for this menu
};
}
});
};
var contactsMenu = {};
(function() {
var viewModel = null;
contactsMenu.bind = function() {
viewModel = {
phones: ko.observableArray()
};
};
contactsMenu.addPhone = function (phone) {
viewModel.phones.push(phone);
};
contactsMenu.unbind = function() {
viewModel = null;
};
}());
内部的任何菜单负载功能,我内部调用先前加载的菜单的方法unbind
。
loadContactsMenu();
loadProfileMenu(); // internally calls contactsMenu.unbind();
之前,我加载任何数据,我叫unbindPreviousSection()
功能配置上一级菜单数据。
我的问题是:
是viewModel
变量中contactsMenu
对象仍然坚持我打电话contactsMenu.unbind()
后,即使我将它设置为空? (是否会造成内存泄漏?)
是否contactsMenu.addPhone
函数创建一个保存在内存中的闭包viewModel
变量(因为在函数内部使用)?