630
Rozdział 13
Rozszerzanie wbudowanych zachowań
Stosowanie dziedziczenia do własnych celów…
Rozszerzanie wbudowanych obiektów
Już wiesz, że dodając metody do prototypu, możemy dodawać nowe możliwości
funkcjonalne do wszystkich instancji utworzonych w oparciu o ten prototyp. Dotyczy to
nie tylko naszych własnych obiektów, lecz także obiektów wbudowanych.
W ramach przykładu przyjrzymy się obiektowi
String
— używaliśmy już niektórych metod
tego obiektu, takich jak
substring
. Co trzeba by zrobić, gdybyśmy chcieli utworzyć nową
metodę i udostępnić ją we wszystkich instancjach
String
? Moglibyśmy to zrobić za pomocą
znanej już techniki rozszerzania obiektu poprzez modyfikację jego prototypu.
Załóżmy zatem, że chcemy rozszerzyć prototyp
String
, dodając do niego metodę
cliche
, która będzie zwracać wartość
true
, jeśli w łańcuchu znaków uda się jej znaleźć
jeden z poszukiwanych zwrotów. Poniżej przedstawiliśmy kod tej metody.
Pamiętaj, że choć zazwyczaj
traktujemy łańcuchy znaków
jak dane typu prostego, jednak
mogą one także przyjmować
postać obiektów. JavaScript
automatycznie zajmuje się
konwersją łańcucha na obiekt
String, kiedy tylko okaże się
to konieczne.
String.prototype.cliche= function() {
var cliche = [”wygraÊ w cuglach”,”byÊ w kontakcie”, ”gwóědě do trumny”];
for (var i = 0; i < cliche.length; i++) {
var index = this.indexOf(cliche[i]);
if (index >= 0) {
return true;
}
}
return false;
};
A teraz napiszemy fragment kodu, który umożliwi przetestowanie
tej metody.
var sentences = [”Zaraz wyĂlÚ po niego samochód.”,
JeĂli bÚdzie tak graï, przeciwnik powinien wygraÊ w cuglach.”,
”Te wyniki finansowe to gwóědě do trumny obecnego zarzÈdu.”];
for (var i = 0; i < sentences.length; i++) {
var phrase = sentences[i];
if (phrase.cliche()) {
console.log(”WYKRYTO ZWROT: ” + phrase);
}
}
W tym miejscu dodajemy do
prototypu String metodę cliche
A tu definiujemy
zwroty, które nas
interesują.
Następnie używamy metody indexOf
obiektów String, by sprawdzić, czy zwrot
występuje w łańcuchu znaków. Jeśli
go znajdziemy, natychmiast kończymy
działanie metody i zwracamy wartość true.
Zwróć uwagę, że this reprezentuje
łańcuch znaków, na rzecz którego
metoda została wywołana.
Aby przetestować metodę, utworzymy
kilka zdań, z których dwa będą zawierać
poszukiwane zwroty.
Każde zdanie jest łańcuchem
znaków, a zatem możemy go użyć
do wywołania metody cliche.
Jeśli metoda zwróci true,
będziemy wiedzieć, że zdanie
zawiera poszukiwany zwrot.
Zwróć uwagę, że nie tworzymy tu obiektu łańcucha
znaków, używając konstruktora String i operatora
new. JavaScript zupełnie niezauważalnie
skonwertuje każdy łańcuch na obiekt String,
gdy tylko wywołamy metodę cliche.

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.