Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Brak wielokrotnego dziedziczenia

UWAGA: Tłumaczenie tej strony nie zostało zakończone.
Może być ona niekompletna lub wymagać korekty.
Chcesz pomóc? | Dokończ tłumaczenie | Sprawdź ortografię | Więcej takich stron+.

Brak wielokrotnego dziedziczenia

Niektóre języki obiektowe pozwalają na wielokrotne dziedziczenie. Oznacza to, że obiekt może dziedziczyć własności i wartości z niespokrewnionego obiektu-rodzica. JavaScript nie obsługuje wielokrotnego dziedziczenia.

Dziedziczenie wartości własności pojawia się w momencie uruchomienia, gdy JavaScript przeszukuje łańcuch prototypu obiektu, aby odnaleźć właściwą wartość. Ponieważ obiekt posiada pojedynczy powiązany prototyp, JavaScript nie może dynamicznie dziedziczyć z więcej niż jednego łańcucha prototypu.

W JavaScripcie możesz użyć konstruktora funkcji do wywołania więcej niż jednej, innej funkcji w jego wnętrzu. Daje to pozorne wrażenie wielokrotnego dziedziczenia. Rozważ przykładowo poniższe instrukcje:

function Hobbyist (hobby) {
   this.hobby = hobby || "scuba";
}

function Engineer (name, projs, mach, hobby) {
   this.base1 = WorkerBee;
   this.base1(name, "engineering", projs);
   this.base2 = Hobbyist;
   this.base2(hobby);
   this.machine = mach || "";
}
Engineer.prototype = new WorkerBee;

dennis = new Engineer("Doe, Dennis", ["collabra"], "hugo")

Further assume that the definition of WorkerBee is as used earlier in this chapter. In this case, the dennis object has these properties:

dennis.name == "Doe, Dennis"
dennis.dept == "engineering"
dennis.projects == ["collabra"]
dennis.machine == "hugo"
dennis.hobby == "scuba"

So dennis does get the hobby property from the Hobbyist constructor. However, assume you then add a property to the Hobbyist constructor's prototype:

Hobbyist.prototype.equipment = ["mask", "fins", "regulator", "bcd"]

Obiekt dennis nie dziedziczy tej nowej własności.

Autorzy i etykiety dokumentu

 Autorzy tej strony: teoli, Ptak82, Diablownik, Mgjbot
 Ostatnia aktualizacja: teoli,