550
Rozdział 12
Jak naprawdę działają konstruktory
Sposób działania konstruktorów
Wiesz już, jak można zadeklarować konstruktor oraz używać go do tworzenia nowych
obiektów; jednak warto także zajrzeć za kulisy konstruktorów, by przekonać się, jak
naprawdę działają. A oto klucz do tej tajemnicy: aby zrozumieć konstruktory, należy
wiedzieć, co robi operator
new
.
Zaczniemy od instrukcji, której użyliśmy wcześniej do określenia wartości zmiennej
fido
.
var fido = new Dog(”Burek”, ”mieszaniec”, 20);
Przyjrzyjmy się teraz prawej stronie operatora przypisania, gdzie dzieją się najważniejsze
rzeczy. Spróbujmy wykonać to wyrażenie.
1
3LHUZV]ċU]HF]ċNWyUċURELRSHUDWRUnewMHVWXWZRU]HQLH
QRZHJRSXVWHJRRELHNWX
2
1DVWĐSQLHnewVSUDZLDİH]PLHQQDthisRGZRâXMHVLĐGR
WHJRQRZHJRRELHNWX
Zapewne pamiętasz
z rozdziału 5,
że this zawiera
referencję do
aktualnego obiektu,
na którym operuje
nasz kod.
3
.LHG\]RVWDâDMXİRNUHĤORQDZDUWRĤþthisZ\ZRâXMHP\IXQNFMĐDog
SU]HND]XMċFGRQLHMDUJXPHQW\”Burek””mieszaniec”RUD]20
this
function Dog(name, breed, weight) {
this.name = name;
this.breed = breed;
this.weight = weight;
}
”Burek” ”mieszaniec” 20
this
QDPH%XUHN
this
QDPH%XUHN
EUHHGPLHV]DQLHF
this
QDPH%XUHN
EUHHGPLHV]DQLHF
ZHLJKW
4
Następnie wykonywane jest ciało funkcji. Podobnie jak
przeważająca większość konstruktorów, także funkcja
Dog
przypisuje wartości właściwościom nowo utworzonego
obiektu
this
.
Wykonanie ciała funkcji Dog dostosowuje
zawartość nowego obiektu, tworząc w nim
trzy właściwości i przypisując im wartości
odpowiednich parametrów.
jesteś tutaj
551
Zaawansowane sposoby konstruowania obiektów
Za kulisami
5
:NRĚFXNLHG\UHDOL]DFMDIXQNFMLDog]RVWDQLH]DNRĚF]RQD
RSHUDWRUnew]ZUDFDZDUWRĤþthisF]\OLUHIHUHQFMĐGRQRZR
XWZRU]RQHJRRELHNWX=DXZDİİHFDâHWRZ\UDİHQLHVDPR
]ZUDFDZDUWRĤþthisQLHPXVLP\WHJRURELþMDZQLHZVZRLP
NRG]LH$NLHG\Z\UDİHQLH]ZUyFLMXİQRZ\RELHNWPRİHP\
]DSLVDþUHIHUHQFMĐGRQLHJRZ]PLHQQHMfido
QDPH%XUHN
EUHHGPLHV]DQLHF
ZHLJKW
ILGR
BĄDŹ przeglądarką
Poniżej znajdziesz fragment kodu JavaScript, w którym ukryło się
kilka błędów. Twoim zadaniem jest wcielić się w rolę przeglądarki
i odnaleźć te błędy. Kiedy już wykonasz to ćwiczenie, zajrzyj do
rozwiązania zamieszczonego pod koniec rozdziału i przekonaj
się, czy udało Ci się znaleźć je wszystkie. A poza tym, jesteśmy
już w rozdziale 12., zatem jeśli chcesz, zapisz także swoje uwagi
dotyczące stylu tego kodu. Zasłużyłeś sobie na to.
function widget(partNo, size) {
var this.no = partNo;
var this.breed = size;
}
function FormFactor(material, widget) {
this.material = material,
this.widget = widget,
return this;
}
var widgetA = widget(100, ”duĝy”);
var widgetB = new widget(101, ”maïy”);
var formFactorA = newFormFactor(”plastikowy”, widgetA);
var formFactorB = new ForumFactor(”metalowy”, widgetB);
Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.