2017-02-10 51 views
1

所以CONSOLE.LOG之前删除节点,我在JS创建了一个标准的链表类,它完美地workds但这种情况发生,例如/ .....链表中删除在JavaScript

 var myRef = new LinkedList() //let's say with vals 1->2->3 
    console.log(myRef) //2->3 They are both the same!!!! even though delete happens later in code!!! 
    myRef.deleteFirst(); 

    console.log(myRef) //2->3 They are both the Same!! 

    LinkedList.prototype.deleteFirst = function() { 
     if (this.head.next == null) { 
     return; 
    } 
    var dummy = this.head.next.next; 
    var value = this.head.next.data; 
    delete this.head.next; 
    this.head.next = dummy; 
    this.head.length -= 1; 

    return value; 

} 
+1

相关:[Chrome的JavaScript控制台是否懒惰评估数组?](http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-evaluating-arrays) –

+0

点击'我旁边的控制台输出,并阅读那里的解释。 –

回答

0

试试这个:

console.log(JSON.stringify(myRef)); 

这将打印stringify版本的对象。所以,而不是你的对象会得到对象的内容,否则,因为myRef是一个指针,它的内容将会改变,日志显示最新的值。

0

控制台将有一个对象的引用,它将在对象更新时进行更新。你可以这样做:

console.log(jQuery.extend(true, {}, myRef)); 

这将创建一个独立的副本对象。这将允许您检查不同的状态。

+0

默认情况下,jQuery在浏览器中不可用。 –

+0

是真的,你需要包含它(例如,把它放在你的HTML中:'' – JJFlash42