Подскажите кто-нибудь из опытных.
У меня есть дерево меню, которое содержит одинарные узлы и список узлов, каждый узел имеет ссылку на родительский узёл. Вопрос произойдёт ли утечка памяти если я буду удалять узел, который содержит список узлов? Посмотрите на метод remove(), правильно ли я удаляю узлы?
function Button(name) {
this.id = -1;
this.parent = null;
this.name = name;
this.html = "<div>Кнопка</div>";
}
Button.prototype = {
setId: function(id) {
this.id = id;
},
setParent: function(parent) {
this.parent = parent;
},
remove: function() {
this.parent = null;
this.html = "";
}
}
function List() {
this.id = 0;
this.children = {};
}
List.prototype = {
parent: null,
setParent: function(parent) {
this.parent = parent;
},
add: function(child) {
this.children[this.id++] = child;
child.setParent(this);
},
remove: function(id) {
if (id in this.children) {
var node = this.children[id];
if (node.children) {
for (var k in node.children) {
node.remove(k);
}
delete this.children[id];
node.parent = null;
node = null;
} else {
node.remove();
delete this.children[id];
node = null;
}
}
}
}
var root = new List();
var menu = new List();
var submenu = new List();
submenu.add(new Button("Подпункт 1"));
submenu.add(new Button("Подпункт 2"));
submenu.add(new Button("Подпункт 3"));
menu.add(new Button("Кнопка 1"));
menu.add(submenu);
root.add(menu);
console.log(menu.children);
//menu.remove(1);
//console.log(menu.children);