Il seguente codice funziona e, mentre capisco perché funziona, non l'ho visto da nessuna parte. Presumo questo perché tutti gli altri schemi di progettazione sono molto migliori.add (1) (2) (3) .total === 6 - Qualcun altro ha visto funzioni di ritorno automatico utilizzate in questo modo?
Mi sarei comunque aspettato di vedere l'esempio come un ammonimento lungo la linea, ma non l'ho fatto.
Certo, è terribile, soprattutto con l'esempio di sotto del quale ho scelto perché è chiaro ciò che fa, ma:
Cos'è questo modello chiamato?
È comunemente usato?
Esistono progetti legittimi che utilizzano questo modello?
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);
Modifica: modifica del nome variabile in modo che il codice funzioni in IE.
Questo modello di progettazione sembra un puzzle piuttosto che un codice pulito :) –
Ma PERCHÉ faresti qualcosa del genere ?! –
Questo schema non mi sembra terribile. È molto chiaro da leggere. Credo che preferirei vedere il 'total' come una variabile locale, e la proprietà' .total' come metodo che restituisce il risultato e resetta la variabile. –