这段代码有什么问题?我想做一些类似于循环链接列表的东西。
<script type="text/javascript" charset="utf-8">
function LinkedText(text, nextLinkedText) {
this.text = text;
this.next = nextLinkedText;
this.AsNext= function() {
this.text = this.next.text;
this.next = this.next.next;
return this;
}
}
var first = new LinkedText('first')
var last = new LinkedText('last', first);
first.next = last;
alert(first.text); //show 'firts'
alert(first.AsNext().text); //show 'last'
alert(first.AsNext().text); //show 'last' not 'first' why?
alert(first.AsNext().text); //show 'last'
alert(first.AsNext().text); //show 'last' not 'first' why?
</script>
答案 0 :(得分:1)
重写GetNext:
this.GetNext = function() {
return this.next;
}
当你想要的只是获取链接节点并访问它的文本时,在GetNext中重新分配 this.text 是没有意义的。
你可以像这样使用它:
var i = 0 // avoid infinite loop below
var maxruns = 10; // avoid infinite loop below
var node = first;
while(node){
doSomethingWithNode(node);
node = node.GetNext();
// avoid an infinite loop
i++;
if (i > maxruns) {
break;
}
}