Skopiuj prototyp do dziedziczenia?
Bawiłem się w JavaScript, w szczególności symulując programowanie obiektowe za pomocą klas i tak dalej.
Wiedziałem o tym sposobie osiągnięcia dziedzictwa
MyClass.prototype = new AnotherClass();
Ale nie byłem zadowolony, nie podobało mi się, jak musiałem zadzwonić do konstruktoraAnotherClass
. Więc bawiłem się i wymyśliłem coś, co wydawało się działać i zasadniczo chciałbym mieć drugą opinię.
function clone (obj)
{
function CloneFactory () {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
Klonując prototyp, otrzymujemy nową jego kopię i przypisujemy ją doMyClass
prototyp, aby zmiana odziedziczonych właściwości nie wpłynęła na właściwości prototypu rodzica. Tak by to wyglądałoMyClass.prototype = AnotherClass.prototype
.
Przeprowadziłem testy warunków skrajnych i jest to bardziej efektywne w pewnych okolicznościach, tj. Gdy w konstruktorze rodzica jest dużo kodu, w przeciwnym razie jest mniej więcej taki sam. Inną korzyścią (lub przynajmniej uważam to za korzystne) jest to, że pozwala ona w pewnym stopniu ukrywać informacje przed podklasami. Wszelkie uprzywilejowane metody i elementy NIE będą dziedziczone.
Czy jest jakiś poważny problem, którego nie widzę?
Nie jestem ekspertem w dziedzinie JavaScript, właściwie jestem całkiem nowym użytkownikiem JavaScript, więc chciałbym mieć drugą opinię na ten temat, ponieważ nie mogę znaleźć niczego za pośrednictwem Google. Nie chcę implementować złego kodu :)!