/ / Zanieczyszczenia a dziedziczenie prototypów - javascript

Zanieczyszczenia a dziedziczenie prototypów - javascript

Pozwól nam mieć 2 konstruktorów

bird= function(name){
this.cry=function(){ alert("cry"); }
this.name=name;
}
duck= function(){
this.cry=function(){ alert("cry cry"); }
}
b= new bird("Ivan");
d= duck.call(b);

i rozważ prototypowe dziedziczenie

bird= function(name){
this.cry=function(){ alert("cry"); }
this.name=name;
}
duck= function(){
this.cry=function{ alert("cry cry"); }
}
duck.prototype= new bird("Ivan");

Czy można uzyskać przykłady, kiedy prototypowe dziedziczenie jest lepsze od zanieczyszczeń, a gdy zanieczyszczenia są lepsze od prototypowego dziedziczenia.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie powinieneś tworzyć instancji Parent, aby ustawić prototypową część dziedziczenia (użyj Child.prototype = Object.create (Parent.prototype), Child.prototype.constructor = Child).

Funkcje konstruktora powinny zaczynać się od Kapitału (wielka litera).

Możesz dziedziczyć przez wypychanie wszystkiego w funkcji konstruktora (pierwszy przykład) iw dziale Dziecko Parent.apply(this,arguments); ale Dziecko nie będzie w stanie rozszerzyć funkcji nadrzędnych, a zajmie więcej procesora i pamięci, aby utworzyć wystąpienia dziecka i rodzica.

Sposób w jaki twój drugi przykład używa prototypuźle, ustawiasz wspólne zachowanie jako element instancji (funkcja płaczu) i specyficzny dla instancji element na prototypie Duck (członek nazwy). Jeśli chodzi o zalety korzystania z prototypu (jeśli wykonane poprawnie) w pierwszym przykładzie, który dostarczyłeś:

  1. Możesz ponownie użyć funkcji rodzicielskich w funkcji Dziecko i rozszerzyć je, jeśli chcesz
  2. Wykorzystuje mniej pamięci i mniej procesora do inicjowania wystąpień, ponieważ członkowie prototypów są udostępniani.
  3. Możesz dodać zachowanie prototypu po utworzeniu instancji i mieć wszystkie istniejące wystąpienia tego zachowania.
  4. Inni programiści JS lepiej zrozumieliby twój kod i myśleli, że wiesz, co robisz.

Więcej informacji na temat funkcji konstruktora i prototypu można znaleźć tutaj.