@@ -9,15 +9,15 @@ modelu. Na przykład stworzenia klasycznego modelu na podstawie modelu prototypo
99jest dość proste, podczas gdy zrobienie odwrotnego przekształcenie to o wiele trudniejsze zadanie.
1010
1111Ze względu na fakt, że w JavaScript jest w zasadzie jedynym powszechnie stosowanym
12- językiem, któy posiada prototypowy model dziedziczenia, dostosowanie się do różnic pomiędzy
12+ językiem, który posiada prototypowy model dziedziczenia, dostosowanie się do różnic pomiędzy
1313tymi dwoma modelami wymaga trochę czasu.
1414
1515Pierwszą znaczącą różnicą jest to, że dziedziczenie w JavaScript odbywa się za pomocą
1616tak zwanych * łańcuchów prototypów* .
1717
1818> ** Uwaga:** Używanie po prostu ` Bar.prototype = Foo.prototype ` spowoduje, że oba obiekty
1919> będą korzystały z ** tego samego** prototypu. W związku z tym zmiany w prototypie jednego
20- > obiektu będą również zmieniały prototyp drugiego obiektu, co jest ,w wiekszości przypadków,
20+ > obiektu będą również zmieniały prototyp drugiego obiektu, co jest ,w większości przypadków,
2121> niepożądanym efektem.
2222
2323 function Foo() {
@@ -50,14 +50,14 @@ tak zwanych *łańcuchów prototypów*.
5050W powyższym przykładzie obiekt ` test ` będzie dziedziczył z obydwu, tj.
5151` Bar.prototyp ` i ` Foo.prototyp ` , stąd będzie miał dostęp do funkcji ` method ` ,
5252która była zdefiniowana w ` Foo ` . Ponadto obiekt będzie miał dostęp do
53- właściwości ` value ` , która jest jednyną instancją ` Foo ` i stała się jego prototypem.
53+ właściwości ` value ` , która jest jedyną instancją ` Foo ` i stała się jego prototypem.
5454Należy pamiętać, że ` new Bar ` ** nie** tworzy nowej instancji ` Foo ` ,
5555tylko wykorzystuje instancję, która jest przypisana do własności ` prototype ` .
5656Zatem Wszystkie instancje ` Bar ` będą dzieliły tą samą własność ` value ` .
5757
5858> ** Uwaga:** ** Nie** należy używać konstrukcji ` Bar.prototype = Foo ` ,
5959> ponieważ nie spowoduje ona przypisania prototypu ` Foo ` tylko obiektu
60- > funckji ` Foo ` . Zatem łańcuch prototypów nie bedzie zawierał ` Foo.prototype ` ,
60+ > funckji ` Foo ` . Zatem łańcuch prototypów nie będzie zawierał ` Foo.prototype ` ,
6161> tylko ` Function.prototype ` , więc metoda ` method ` nie będzie w łańcuchu prototypów.
6262
6363### Wyszukiwanie własności
@@ -102,11 +102,11 @@ Nie ma jednak dobrego powodu, aby zaśmiecać wbudowane typy poprzez wzbogacanie
102102* niestandardowe* funkcjonalności.
103103
104104** Jedynym** dobrym powodem do rozszerzania wbudowanych prototypów jest portowanie
105- funkcjonalności znajdujących sie w nowszych silnikach JavaScript, np. [ ` Array.forEach ` ] [ 3 ]
105+ funkcjonalności znajdujących się w nowszych silnikach JavaScript, np. [ ` Array.forEach ` ] [ 3 ]
106106
107107### Wnioski
108108
109- Zanim przystąpi się do pisania skomplikowanego kodu korzystającego z dziedziczania ,
109+ Zanim przystąpi się do pisania skomplikowanego kodu korzystającego z dziedziczenia ,
110110należy ** całkowicie** zrozumieć prototypowy model dziedziczenia. Ponadto trzeba uważać
111111na długość łańcucha prototypów i w razie potrzeby zmniejszać ilość dziedziczeń,
112112aby uniknąć problemów z wydajnością. Natywne prototypy ** nigdy** nie powinny być
0 commit comments