convalida degli argomenti nei costruttori javascript

0

In molti casi, è utile avere un metodo costruttore o factory che convalida gli argomenti prima di creare un'istanza di un oggetto, restituendo un nuovo oggetto se gli argomenti sono validi e nulli altrimenti.

Ma nei costruttori javascript tradizionali, sei limitato a ciò che puoi restituire. In particolare, non è possibile restituire null.

Esiste uno schema di programmazione preferito che assolva questo compito, onorando idealmente l'ereditarietà? Concettualmente, sto cercando qualcosa di simile (so che questo codice non può funzionare):

// This RootClass code can't possibly work -- it's for illustration only
function RootClass() {};
RootClass.prototype.constructor = RootClass;
RootClass.createValidated(arg) {
  return isArgValid(arg) ? originalConstructor(arg) : null;
}

// example subclass
function OddsOnly(arg) { this._arg = arg; }
OddsOnly.prototype = Object.create(RootClass.prototype);
OddsOnly.prototype.constructor = OddsOnly;
OddsOnly.prototype.isArgValid = function(x) { return x & 1; };

// example calls
var a = OddsOnly.createValidated(3); // => OddsOnly { _arg: 3 }
var b = OddsOnly.createValidated(2); // => null

(Credito extra: esiste un modo per nascondere o offuscare il metodo new in modo che deve utilizzare il metodo createValidated() ?)

    
posta fearless_fool 12.06.2016 - 02:39
fonte

0 risposte

Leggi altre domande sui tag