So che ci sono molte domande simili a tonnellate di grandi risposte a questo. Ho provato a guardare i metodi di ereditarietà classica, o quei metodi di chiusura, ecc. In qualche modo ritengo che siano metodi più o meno "di hacking" per me, in quanto non è proprio ciò che il javascript è progettato per fare. (Benvenuto qualcuno mi corregga se sbaglio). OK, finché funziona, soddisfo con il modello di ereditarietà classica come:javascript inheritance
PARENTClass = function (basevar) { do something here; };
PARENTClass.prototype = { a: b, c: d}; // prototype is auto gen
// Inheritance goes here
CHILDClass = function (childvar) { do something; };
CHILDClass.prototype = new PARENTClass(*1); // Actual inheritance to the prototype statement
// Instance
CHILDInstance = new CHILDClass(whatever);
Sopra è in qualche modo, alla mia comprensione l'eredità di JS. Ma uno scenario non ho idea di come implementare, è quello che succede se voglio fare un po 'di inizializzazione durante la creazione dell'oggetto (cioè all'interno del costruttore), e il nuovo oggetto può essere usato subito ... La mia illustrazione sul problema potrebbe non essere troppo chiaro, così mi ha lasciato usare il seguente C# Psuedo di spiegare quello che voglio fare: (. come init elementi dell'interfaccia utente)
class PARENT {
public PARENT (basevar) { ... }
}
class CHILD : PARENT {
public CHILD (basevar) : PARENT (basevar) // constructor of child, and call parent constructor during construct.
{ ... }
}
per qualche ragione, la loro messa nel costruttore sembra il modo migliore per farlo. Qualcuno ha un'idea su come posso farlo.
PS: nel * 1, non ho idea di cosa dovrei mettere lì. PS2: La situazione di cui sopra ho trovato che la libreria jquery.inherit può fare, mi chiedo solo se non usare la libreria può realizzarla. PS3: O la mia comprensione è sbagliata. Poiché javascript non ha lo scopo di imitare OOP (è per questo che lo chiamo hack), qual è la logica "CORRETTA" per implementarlo.
Check this out: http://stackoverflow.com/questions/7486825/javascript-inheritance/12816953#12816953 –
Usa Object.create() per ereditare il prototipo dalla classe base. In questo modo si modifica l'ondulazione della classe base fino alla sottoclasse, ma non viceversa. Maggiori dettagli sul mio blog: http://ncombo.wordpress.com/2013/07/11/javascript-inheritance-done-right/ – Jon