regresar a la lección

Encadenamiento

importancia: 2

Hay un objeto ladder que permite subir y bajar:

let ladder = {
  step: 0,
  up() {
    this.step++;
  },
  down() {
    this.step--;
  },
  showStep: function() { // muestra el peldaño actual
    alert( this.step );
  }
};

Si ahora necesitamos hacer varios llamados en secuencia, podemos hacer algo como esto:

ladder.up();
ladder.up();
ladder.down();
ladder.showStep(); // 1
ladder.down();
ladder.showStep(); // 0

Modifica el código de “arriba” up, “abajo” down y “mostrar peldaño” showStep para hacer los llamados encadenables. Así:

ladder.up().up().down().showStep().down().showStep(); // muestra 1 luego 0

Tal enfoque es ampliamente usado en librerías JavaScript.

Abrir en entorno controlado con pruebas.

La solución es devolver el objeto mismo desde cada llamado.

let ladder = {
  step: 0,
  up() {
    this.step++;
    return this;
  },
  down() {
    this.step--;
    return this;
  },
  showStep() {
    alert( this.step );
    return this;
  }
};

ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0

También podemos escribir una simple llamada por línea. Para cadenas largas es más legible:

ladder
  .up()
  .up()
  .down()
  .showStep() // 1
  .down()
  .showStep(); // 0

Abrir la solución con pruebas en un entorno controlado.