604
Rozdział 13
Zastosowanie prototypów do określania wartości początkowych
Bardziej interesująca implementacja metody sit
Spróbujmy nieco uatrakcyjnić metodę
sit
: początkowo pies nie będzie siedział (czyli będzie
stał). Kiedy zatem wywołamy metodę
sit
, a pies nie będzie siedział, metoda ta sprawi, że pies
wykona siad. W przeciwnym razie poinformujemy tylko użytkownika, że pies już siedzi. Będzie
nam potrzebna dodatkowa właściwość,
sitting
, która przechowa informację o tym, czy pies już
siedzi, czy nie. Napiszemy teraz kod nowej wersji metody.
Dog.prototype.sitting = false;
Dog.prototype.sit = function() {
if (this.sitting) {
console.log(this.name + ” juĝ siedzi.”);
} else {
console.log(this.name + ” wykonaï siad.”);
this.sitting = true;
}
};
Ponieważ w prototypie
przypisaliśmy właściwości
sitting wartość false,
zatem każdy pies
początkowo będzie stał.
Następnie w metodzie sit sprawdzamy,
czy pies już wcześniej wykonał siad,
czy wciąż stoi. Przede wszystkim,
odwołując się do właściwości
this.sitting, będziemy sprawdzać
wartość zapisaną w prototypie psa.
Jeśli jednak pies jeszcze nie siedzi, każemy
mu wykonać siad, a następnie przypisujemy
właściwości this.sitting wartość true.
Przesłaniamy w ten sposób właściwość określoną
w prototypie i zapisujemy ją w instancji obiektu.
barnaby.sit()
barnaby.sit()
spot.sit()
spot.sit()
Konsola JavaScript
Barnaba wykonaï siad.
Barnaba juĝ siedzi.
Kieï wykonaï siad.
Kieï juĝ siedzi
Zaczynamy od dodania do
prototypu właściwości sitting.
Zauważ, że teraz instancja dysponuje
swoją własną, lokalną właściwością
sitting, której wartością jest true.
Jeśli pies już wcześniej wykonał
siad, informujemy użytkownika,
że pies już siedzi.
Interesującym aspektem tego kodu jest to, że kiedy instancja
Dog
zostaje utworzona, dziedziczy
domyślną wartość właściwości
sitting
, czyli
false
. Jednak kiedy zostanie wywołana metoda
sit
, instancja psa dodaje własną wartość właściwości
sitting
, co sprawia, że zostanie ona
utworzona w instancji. Spowoduje to przesłonięcie wartości podanej w prototypie. Takie
rozwiązanie zapewnia możliwość określania domyślnych wartości, które będą stosowane dla
wszystkich psów, a następnie, jeśli będzie trzeba, zmieniania ich w konkretnych instancjach.
Jazda testowa z nową metodą sit
Spróbujmy na poważnie przetestować naszą nową metodę. Zaktualizuj kod pliku, dodaj do
niego nową właściwość i zaimplementuj nową wersję metody
sit
. Po przetestowaniu kodu okaże
się, że możesz nakazać siad Barnabie, a następnie Kłowi, i każdy pies będzie pamiętał swój stan
niezależnie od innych.
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.