Professionale JavaScript per gli sviluppatori web, terza edizione di Nicholas C. Zakas (Wrox, 2012, p.210-215 descrive "Parassita Inheritance Combination" usando la seguente funzione:"parassita Combinazione Inheritance" in Professionale JavaScript per gli sviluppatori web
.function inheritPrototype(subType, superType) {
var prototype = object(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
}
devo ancora capire che cosa l'assegnazione del sottotipo al prototype.constructor fa o dovrebbe fare meno che non mi manca qualcosa, l'uscita ottengo utilizzando il codice di esempio è lo stesso:
Senza "augment object" (prototype.constructor = subType;) in inheritPrototype: http://jsfiddle.net/Q22DN/
Con "aumentare oggetto" (prototype.constructor = subType;) in inheritPrototype http://jsfiddle.net/eAYN8/
questo può davvero essere una riga di codice senza scopo? Grazie per la tua spiegazione!
v'è alcuna ragione per preferisci questo modello a goog.inherits? http://docs.closure-library.googlecode.com/git/closure_goog_base.js.source.html#line1466 Mi piace come imposta 'superClass_' in child in modo da poter sovrascrivere i metodi parent e continuare a chiamarli da un bambino. – HMR
@HMR: diversi modelli di ereditarietà tendono a funzionare meglio con caratteristiche diverse (come interagire con classi "regolari", se è possibile gestire più ereditarietà, variabili private o protette, super, ecc.). Personalmente, tendo a programmare in uno stile più "funzionale", quindi in realtà non uso molte di queste classi e quando le uso la gerarchia è di solito molto piatta, quindi la superclasse e l'ereditarietà non finiscono per importare molto. – hugomg
Sia missingno che Givi sono corretti in quanto l'assegnazione al costruttore non è obbligatoria e senza di essa il costruttore di istanze subType (o child) === SuperType, e resettandolo su SubType renderà le informazioni disponibili in seguito. Forse questo è tutto ciò che c'è da fare. Grazie! –