Funciones en Cadena [Method Chaining]

Técnica para simplificar la ejecución de múltiples métodos sobre una misma variable u objeto.

const cal = (num) => {
  let total = num || 0;
  return {
    sumar(num2) {
      total = total + num2;
      return this;           /* retorna this el cual contine sumar, restar e imprimirTotal */
    },
    restar(num2) {
      total = total - num2;
      return this;          /* retorna this el cual contine sumar, restar e imprimirTotal */
    },
    imprimirTotal() {
      console.log(total);
      return this;          /* retorna this el cual contine sumar, restar e imprimirTotal */
    },
  };
};

const calculator = cal(10);   /* num = 10 */

calculator.sumar(10)        /* num = 20 */
          .restar(2)        /* num = 18 */
          .sumar(5)         /* num = 23 */
          .imprimirTotal(); // 23