2017-02-10 53 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