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

関連する問題