In der Standardklasse Ableitung gibt es die fast universellen Fehler, von einer neu erstellten Basisklasse-Instanz (B.prototype = new A) abzuleiten. Der Basisklassenkonstruktor führt zumindest unnötigen Code aus und kann im schlimmsten Fall ohne die Eingabeargumente abstürzen, die nicht nur zur Ableitung künstlich erzeugt werden sollten. Darüber hinaus werden Instanzfunktionen der Basisklasseninstanz Teil des Prototyps abgeleiteter Klassen, der nur durch Zufall geeignet ist.
Lässt klar sein! Wenn Sie von einer Basisklasseninstanz erben, die vom Basisklassenkonstruktor (B.prototype = new A) erstellt wurde, erben Sie nicht direkt von der Basisklasse !! Sie haben in der Vererbungskette einen Intermediär angelegt, nämlich die Basisklasseninstanz !!! Autsch!!!! Dies ist ineffizient, da bei der Suche nach geerbten Eigenschaftswerten in der Vererbungskette eine zusätzliche Tiefe besteht. Diese Tiefe akkumuliert sich jedes Mal, wenn Sie diesen Fehler machen.
Also was ist der richtige Weg. Anstelle von B.prototype = new A sollten Sie schreiben B.prototype = Object.create (A.prototype). Dies kann nicht hat in 09. Allerdings in 09 gibt es noch
protoProxy = function(myClass)
{
function foo(){};
foo.prototype = myClass.prototype;
return new foo();
}
als Ersatz für Object.create zur Verfügung. Anstelle von B.prototype = new A sollten Sie B.prototype = protoProxy (A) in 09 schreiben;
danke im voraus. –
im voraus von dem was –
advance of thanks –