Durante una revisione del codice oggi, un mio collega ha detto qualcosa di interessante:
prototype
è utile solo quando hai bisogno dell'eredità - e quando l'eredità è sempre una buona idea ?
Ci ho pensato e mi sono reso conto che di solito uso l'ereditarietà per aggirare il codice che è stato mal progettato in primo luogo. Lo stile OO moderno preferisce la composizione rispetto all'eredità, ma non conosco alcuna lingua che lo abbia preso a cuore e che effettivamente lo imponga .
Esistono linguaggi di programmazione generici con classi, oggetti, metodi, interfacce e così via che non consentono l'eredità basata su classi? (Se un'idea del genere non ha senso, perché no?)
implements
parola chiave e le interfacce (al contrario dell'eredità di stato e comportamento introdotto con l'uso della extends
parola chiave su classi contenenti qualsiasi implementazione).
new
, this
E prototype
sono tutti troppo di un campo minato per l'uso comune IMO.
prototype
utile anche quando si hanno metodi e proprietà pubblici che devono essere condivisi tra istanze. E 'anche utile perché consente di utilizzare correttamente l'instanceof
operatore in JavaScript:if (foo instanceof Foo) { ...
.