El siguiente código funciona, y aunque entiendo por qué funciona, no lo he visto en ningún lado. Supongo que esto se debe a que todos los otros patrones de diseño son mucho mejores.add (1) (2) (3) .total === 6 - ¿Alguien más ha visto funciones autorregresivas usadas así?
Todavía esperaba ver el ejemplo como una advertencia en la línea, pero no lo hice.
Claro, es horrible, sobre todo con el ejemplo debajo de la cual he elegido porque está claro lo que hace, sino:
Lo que se llama este patrón?
¿Es de uso común?
¿Hay algún proyecto legítimo que utilice este patrón?
var add = function container (val) {
addFunc = function f (val, undefined) {
addFunc.total += val;
return addFunc;
};
addFunc.total = 0;
return addFunc(val);
};
alert(add(1)(2)(3).total);
alert(add(1)(2)(33).total);
Editar: Cambio de nombre de variable para que el código funcione en IE.
Este patrón de diseño parece más un rompecabezas que un código limpio :) –
¿Pero POR QUÉ harías algo así? –
Este patrón no me parece terrible. Es muy claro para leer. Creo que prefiero ver el 'total' como una variable local, y la propiedad' .total' como un método que devuelve el resultado y restablece la variable. –