El siguiente código es un método PUSH de lista enlazada individualmente en javascript que agrega un elemento al valor final en la lista.
¿Cómo es que la primera salida muestra la lista enlazada antes de pasar el argumento dentro del método PUSH()?
El primer archivo console.log registra un objeto vacío de la lista, pero dentro del objeto se dan los valores de los argumentos pasados que se pasan más tarde.
¿Cómo es posible esto?
class Node { constructor(val) { this.val = val; this.next = null; } } class SinglyLinkedList { constructor() { this.head = null; this.tail = null; this.length = 0; } // PUSH push(val) { const newNode = new Node(val); if (!this.head) { this.head = newNode; this.tail = newNode; } else { this.tail.next = newNode; this.tail = newNode; } this.length += 1; return this; } } // 1st output console.log(list); list.push("Hi"); list.push("You"); list.push(25); list.push(2); // 2nd output console.log(list);PRODUCCIÓN
1ST consola.log(lista)
SinglyLinkedList {head: null, tail: null, length: 0} head: Node {val: 'Hi', next: Node} length: 4 tail: Node {val: 2, next: null} [[Prototype]]: Object2ND consola.log(lista)
SinglyLinkedList {head: Node, tail: Node, length: 4} head: Node {val: 'Hi', next: Node} length: 4 tail: Node {val: 2, next: null} [[Prototype]]: Object