2017-02-10 7 views
1

Итак, я создал стандартный связанный список класса в JS и workds отлично, но это происходит, например,/.....Связанный список удаления удаляет узел перед console.log в 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

Связано: [Является ли консоль JavaScript Chrome ленивой относительно оценки массивов?] (Http://stackoverflow.com/questions/4057440/is-chromes-javascript-console-lazy-about-evaluating-arrays) –

+0

Нажмите на ' i' рядом с выходом консоли и прочитайте объяснение там. –

ответ

0

попробовать это:

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

Это напечатает строгающую версию объекта. Таким образом, вместо того, чтобы ваш объект будет получать содержимое объекта иначе, поскольку myRef является указателем, его содержимое изменится, и в журнале появится последнее значение.

0

Консоль будет иметь ссылку на объект, который будет обновляться при обновлении объекта. Вы можете сделать это:

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

которое создаст независимую копию вашего объекта. Это позволит вам изучить различные состояния.

+0

jQuery по умолчанию недоступен в браузерах. –

+0

true, вам нужно включить его (например, поместив это в свой HTML: ' ' – JJFlash42

Смежные вопросы