Stavo giocando con JavaScript, in particolare simulando la programmazione orientata agli oggetti con le classi e quant'altro.Copia il prototipo per ereditarietà?
ho saputo di questo modo di raggiungere l'eredità
MyClass.prototype = new AnotherClass();
ma non ero soddisfatto, non mi piace come ho avuto bisogno di chiamare il costruttore di AnotherClass
. Quindi stavo giocando e mi è venuto in mente qualcosa che sembrava funzionare e fondamentalmente volevo una seconda opinione.
function clone (obj)
{
function CloneFactory() {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
Clonando il prototipo otteniamo una nuova copia di esso e assegnare tale da prototipo MyClass
s' in modo che la modifica delle proprietà ereditate non influenzerà le proprietà del prototipo del genitore. In questo modo sarebbe MyClass.prototype = AnotherClass.prototype
.
Ho eseguito test di stress e questo è più efficiente in determinate circostanze, vale a dire quando c'è molto codice nel costruttore del genitore, altrimenti è più o meno lo stesso. Un altro vantaggio (o almeno lo trovo utile) è che consente in una certa misura di nascondere le informazioni dalle sottoclassi. Qualsiasi metodo e membro privilegiato NON sarà ereditato.
C'è qualche grave trappola che sto trascurando?
Non sono un esperto di JavaScript, in realtà sono abbastanza nuovo su JavaScript, quindi mi piacerebbe avere un secondo parere su questo perché non riesco a trovare nulla attraverso Google. Non voglio implementare codice errato :)!
Grazie! Fino ad ora non sapevo nemmeno di "Object.create". – SpaceFace