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?)
implementsparola chiave e le interfacce (al contrario dell'eredità di stato e comportamento introdotto con l'uso della extendsparola chiave su classi contenenti qualsiasi implementazione).
new, thisE prototypesono tutti troppo di un campo minato per l'uso comune IMO.
prototypeutile anche quando si hanno metodi e proprietà pubblici che devono essere condivisi tra istanze. E 'anche utile perché consente di utilizzare correttamente l'instanceofoperatore in JavaScript:if (foo instanceof Foo) { ....