【发布时间】:2015-03-31 08:24:30
【问题描述】:
我正在尝试通过以下方式遍历列表 var names = new List();:
var names = new List();
names.append('tom');
names.append('bob');
names.append('marshal');
names.append('Cartman');
names.append('Randy');
for(names.top(); names.currentPosition() < names.length(); names.next()) {
console.log(names.getElement()); // going on and on stuck at one index! infinite loop!!!
}
我得到一个列表索引不变的无限循环。什么 会不会出错?
假设列表已经使用append 方法填充了值。绝对不是空的。下面是 List 类的实现:
function List() {
this.dataStore = [];
this.listSize = 0;
this.position = 0;
}
List.prototype = {
clear: function() {
delete this.dataStore;
this.dataStore = [];
this.position = this.listSize = 0;
},
toString: function() {
return this.dataStore.join(' \n');
},
getElement: function() {
return this.dataStore[this.position];
},
append: function(el) {
this.dataStore[this.listSize++] = el;
},
top: function() {
this.position = 0;
},
bottom: function() {
this.position = this.listSize - 1;
},
prev: function() {
if(this.position > 0) {
this.position--;
}
},
next: function() {
if(this.position < this.listSize - 1) {
this.position++;
}
},
length: function() {
return this.listSize;
},
currentPosition: function() {
return this.position;
},
};
【问题讨论】:
标签: javascript list memory-management data-structures memory-leaks