0

这段代码有什么问题?我想做一些类似于循环链表的东西。

    <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>
4

1 回答 1

1

重写GetNext:

this.GetNext = function() {
    return this.next;
}

当您只想获取链接节点并访问它的text时,在 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;
    }
}
于 2013-01-13T09:48:41.343 回答