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.
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