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
變量(因爲在函數內部使用)?