Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00306 007782 11009317 na godz. na dobę w sumie
JavaScript dla webmasterów. Zaawansowane programowanie - książka
JavaScript dla webmasterów. Zaawansowane programowanie - książka
Autor: Liczba stron: 696
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-0280-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> javascript - programowanie
Porównaj ceny (książka, ebook, audiobook).

Kompendium wiedzy na temat języka JavaScript

JavaScript to język programowania interpretowany po stronie przeglądarki i wykorzystywany do tworzenia elementów stron WWW. Opracowany w firmie Netscape, początkowo służył wyłącznie do weryfikowania poprawności danych wprowadzanych w formularzach. Dziś ma znacznie szersze zastosowania. Przede wszystkim pozwala wzbogacić stronę WWW o elementy niedostępne w 'czystym' HTML, a jego najnowsze wersje umożliwiają korzystanie z dokumentów XML oraz komunikację z usługami sieciowymi. Z tego względu JavaScript jest niemal nieodłącznym elementem nowoczesnej witryny internetowej.

Książka 'JavaScript dla webmasterów. Zaawansowane programowanie' to podręcznik opisujący wszystkie możliwości języka JavaScript. Przedstawia jego historię i pokazuje, jak rozwiązywać problemy, przed którymi często stają twórcy witryn i aplikacji WWW. W książce opisano kluczowe elementy języka, takie jak zdarzenia, wyrażenia regularne oraz metody identyfikacji przeglądarki WWW i interakcji z nią, umożliwiające tworzenie dynamicznych interfejsów użytkownika. Scharakteryzowano sposoby rozszerzania języka JavaScript oraz techniki budowania mechanizmów komunikacji między klientem i serwerem bez używania elementów pośredniczących.

Jeśli chcesz, aby Twoje aplikacje WWW działały szybciej,
skorzystaj z możliwości JavaScript.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI SPIS TREŒCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK JavaScript dla webmasterów. Zaawansowane programowanie Autor: Nicholas C. Zakas T³umaczenie: Jaros³aw Dobrzañski (wstêp, rozdz. 1 – 8), Krzysztof Czupryñski (rozdz. 9), Daniel Kaczmarek (rozdz. 10 – 20) ISBN: 83-246-0280-1 Tytu³ orygina³u: Professional JavaScript for Web Developers Format: B5, stron: 660 DODAJ DO KOSZYKA DODAJ DO KOSZYKA Kompendium wiedzy na temat jêzyka JavaScript CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH O NOWOŒCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl (cid:129) Model DOM i programowanie obiektowe (cid:129) Tworzenie dynamicznych interfejsów u¿ytkownika (cid:129) Mechanizmy komunikacji klient-serwer JavaScript to jêzyk programowania interpretowany po stronie przegl¹darki i wykorzystywany do tworzenia elementów stron WWW. Opracowany w firmie Netscape, pocz¹tkowo s³u¿y³ wy³¹cznie do weryfikowania poprawnoœci danych wprowadzanych w formularzach. Dziœ ma znacznie szersze zastosowania. Przede wszystkim pozwala wzbogaciæ stronê WWW o elementy niedostêpne w „czystym” HTML, a jego najnowsze wersje umo¿liwiaj¹ korzystanie z dokumentów XML oraz komunikacjê z us³ugami sieciowymi. Z tego wzglêdu JavaScript jest niemal nieod³¹cznym elementem nowoczesnej witryny internetowej. Ksi¹¿ka „JavaScript dla webmasterów. Zaawansowane programowanie” to podrêcznik opisuj¹cy wszystkie mo¿liwoœci jêzyka JavaScript. Przedstawia jego historiê i pokazuje, jak rozwi¹zywaæ problemy, przed którymi czêsto staj¹ twórcy witryn i aplikacji WWW. W ksi¹¿ce opisano kluczowe elementy jêzyka, takie jak zdarzenia, wyra¿enia regularne oraz metody identyfikacji przegl¹darki WWW i interakcji z ni¹, umo¿liwiaj¹ce tworzenie dynamicznych interfejsów u¿ytkownika. Scharakteryzowano sposoby rozszerzania jêzyka JavaScript oraz techniki budowania mechanizmów komunikacji miêdzy klientem i serwerem bez u¿ywania elementów poœrednicz¹cych. (cid:129) Podstawowe elementy ECMAScript (cid:129) Zasady programowania obiektowego (cid:129) Osadzanie elementów JavaScript w kodzie strony WWW (cid:129) Hierarchia modelu DOM (cid:129) Korzystanie z wyra¿eñ regularnych (cid:129) Detekcja typu przegl¹darki i systemu operacyjnego (cid:129) Obs³uga zdarzeñ (cid:129) Kontrola poprawnoœci danych z formularzy (cid:129) Wykorzystywanie elementów jêzyka XML (cid:129) Komunikacja miêdzy przegl¹dark¹ i serwerem oraz us³ugi sieciowe (cid:129) Bezpieczeñstwo aplikacji JavaScript Jeœli chcesz, aby Twoje aplikacje WWW dzia³a³y szybciej, skorzystaj z mo¿liwoœci JavaScript Spis treści 2 O autorze ............................................................................................................................................... 15 2 Wstęp .................................................................................................................................................... 17 Rozdział 1. Czym jest JavaScript? ..........................................................................................................23 Krótka historia ............................................................................................................. 24 Implementacje JavaScriptu ........................................................................................... 25 ECMAScript ............................................................................................................ 25 Model DOM ............................................................................................................ 28 Model BOM ............................................................................................................ 31 Podsumowanie ............................................................................................................ 32 Rozdział 2. Podstawy ECMAScriptu ........................................................................................................33 Składnia ...................................................................................................................... 33 Zmienne ...................................................................................................................... 34 Słowa kluczowe ........................................................................................................... 37 Słowa zarezerwowane .................................................................................................. 37 Wartości proste i referencje .......................................................................................... 37 Typy proste .................................................................................................................. 38 Operator typeof ...................................................................................................... 39 Typ Undefined ........................................................................................................ 39 Typ Null ................................................................................................................. 40 Typ Boolean ........................................................................................................... 40 Typ Number ............................................................................................................ 41 Typ String ............................................................................................................... 43 Konwersje ................................................................................................................... 44 Konwersja na ciąg znakowy ..................................................................................... 44 Konwersja na liczbę ................................................................................................ 45 Rzutowanie typów ................................................................................................... 46 Typy referencyjne ......................................................................................................... 48 Klasa Object .......................................................................................................... 48 Klasa Boolean ........................................................................................................ 49 Klasa Number ........................................................................................................ 50 Klasa String ........................................................................................................... 51 Operator instanceof ................................................................................................ 55 Operatory .................................................................................................................... 55 Operatory jednoargumentowe .................................................................................. 55 Operatory bitowe .................................................................................................... 59 Operatory logiczne .................................................................................................. 65 Operatory multiplikatywne ........................................................................................ 69 Operatory addytywne ............................................................................................... 70 4 JavaScript. Zaawansowane programowanie Operatory porównujące ............................................................................................ 72 Operatory równości ................................................................................................. 73 Operator warunkowy ................................................................................................ 75 Operatory przypisania .............................................................................................. 75 Przecinek ............................................................................................................... 76 Instrukcje .................................................................................................................... 76 Instrukcja if ............................................................................................................ 76 Instrukcje iteracyjne ................................................................................................ 77 Etykietowanie instrukcji ........................................................................................... 79 Instrukcje break i continue ...................................................................................... 79 Instrukcja with ........................................................................................................ 80 Instrukcja switch ..................................................................................................... 81 Funkcje ....................................................................................................................... 82 Nie przeładowywać! ................................................................................................. 84 Obiekt arguments ................................................................................................... 84 Klasa Function ....................................................................................................... 85 Zamknięcia ............................................................................................................ 87 Podsumowanie ............................................................................................................ 88 Rozdział 3. Podstawy programowania obiektowego ............................................................................ 91 Terminologia obiektowa ................................................................................................ 91 Wymogi języków obiektowych ................................................................................... 92 Składniki obiektu .................................................................................................... 92 Posługiwanie się obiektami ........................................................................................... 92 Deklaracja i tworzenie egzemplarzy .......................................................................... 93 Referencje do obiektu ............................................................................................. 93 Usuwanie referencji do obiektu ................................................................................ 93 Wiązanie wczesne a wiązanie późne ......................................................................... 94 Typy obiektów .............................................................................................................. 94 Obiekty własne ....................................................................................................... 94 Obiekty wewnętrzne .............................................................................................. 105 Obiekty hosta ....................................................................................................... 111 Zakres ...................................................................................................................... 112 Publiczny, prywatny i chroniony .............................................................................. 112 Statyczny nie jest statyczny ................................................................................... 112 Słowo kluczowe this .............................................................................................. 113 Definiowanie klas i obiektów ....................................................................................... 114 Wzorzec fabryki ..................................................................................................... 114 Wzorzec konstruktora ............................................................................................ 116 Wzorzec prototypu ................................................................................................ 117 Hybrydowy wzorzec konstruktor-prototyp ................................................................. 118 Metoda dynamicznego prototypu ............................................................................ 119 Hybrydowy wzorzec fabryki ..................................................................................... 120 Którego wzorca używać? ........................................................................................ 121 Praktyczny przykład ............................................................................................... 121 Modyfikowanie obiektów ............................................................................................. 123 Tworzenie nowej metody ........................................................................................ 124 Redefiniowanie istniejących metod ......................................................................... 125 Bardzo późne wiązanie .......................................................................................... 126 Podsumowanie .......................................................................................................... 126 Spis treści 5 Rozdział 4. Dziedziczenie ....................................................................................................................... 129 Dziedziczenie w praktyce ............................................................................................ 129 Implementacja dziedziczenia ....................................................................................... 130 Sposoby dziedziczenia .......................................................................................... 131 Bardziej praktyczny przykład ................................................................................... 137 Alternatywne wzorce dziedziczenia ............................................................................... 142 zInherit ................................................................................................................ 142 xbObject .............................................................................................................. 146 Podsumowanie .......................................................................................................... 150 Rozdział 5. JavaScript w przeglądarce ................................................................................................151 JavaScript w kodzie HTML ........................................................................................... 151 Znacznik script/ ............................................................................................... 151 Format plików zewnętrznych ................................................................................... 152 Kod osadzony a pliki zewnętrzne ............................................................................ 153 Umiejscowienie znaczników ................................................................................... 154 Ukrywać albo nie ukrywać ...................................................................................... 155 Znacznik noscript/ ............................................................................................ 156 Zmiany w XHTML .................................................................................................. 157 JavaScript w SVG ....................................................................................................... 159 Podstawy SVG ...................................................................................................... 159 Znacznik script/ w SVG ..................................................................................... 161 Umiejscowienie znaczników script/ w SVG .......................................................... 161 Obiektowy model przeglądarki ..................................................................................... 162 Obiekt window ...................................................................................................... 162 Obiekt document .................................................................................................. 174 Obiekt location ..................................................................................................... 178 Obiekt navigator ................................................................................................... 180 Obiekt screen ....................................................................................................... 182 Podsumowanie .......................................................................................................... 182 Rozdział 6. Podstawy modelu DOM ....................................................................................................... 183 Co to jest DOM? ........................................................................................................ 183 Wprowadzenie do XML .......................................................................................... 183 Interfejs API dla XML ............................................................................................. 187 Hierarchia węzłów ................................................................................................. 187 Modele DOM w konkretnych językach ..................................................................... 190 Obsługa modelu DOM ................................................................................................ 191 Korzystanie z modelu DOM ......................................................................................... 191 Dostęp do węzłów dokumentu ............................................................................... 191 Sprawdzanie typu węzła ........................................................................................ 193 Postępowanie z atrybutami .................................................................................... 193 Dostęp do konkretnych węzłów .............................................................................. 195 Tworzenie węzłów i manipulowanie nimi .................................................................. 197 Elementy funkcjonalne HTML w modelu DOM ............................................................... 202 Atrybuty jako właściwości ...................................................................................... 203 Metody do pracy z tabelami ................................................................................... 203 Przemierzanie w modelu DOM ..................................................................................... 206 Obiekt NodeIterator .............................................................................................. 206 TreeWalker ........................................................................................................... 211 6 JavaScript. Zaawansowane programowanie Wykrywanie zgodności z modelem DOM ....................................................................... 213 Poziom 3 modelu DOM ............................................................................................... 215 Podsumowanie .......................................................................................................... 215 Rozdział 7. Wyrażenia regularne ......................................................................................................... 217 Obsługa wyrażeń regularnych ...................................................................................... 217 Korzystanie z obiektu RegExp ................................................................................ 218 Wyrażenia regularne w standardowych metodach typu String .................................... 219 Proste wzorce ............................................................................................................ 221 Metaznaki ............................................................................................................ 221 Używanie znaków specjalnych ................................................................................ 221 Klasy znaków ....................................................................................................... 222 Kwantyfikatory ...................................................................................................... 225 Złożone wzorce .......................................................................................................... 229 Grupowanie .......................................................................................................... 229 Referencje wsteczne ............................................................................................. 230 Przemienność ....................................................................................................... 231 Grupy nieprzechwytujące ....................................................................................... 233 Wyprzedzenia ....................................................................................................... 234 Granice ................................................................................................................ 235 Tryb wielowierszowy .............................................................................................. 236 Istota obiektu RegExp ................................................................................................ 237 Właściwości egzemplarzy ....................................................................................... 237 Właściwości statyczne ........................................................................................... 238 Typowe wzorce ........................................................................................................... 240 Kontrola poprawności dat ...................................................................................... 240 Kontrola poprawności danych karty kredytowej ........................................................ 242 Kontrola poprawności adresu e-mail ....................................................................... 246 Podsumowanie .......................................................................................................... 247 Rozdział 8. Wykrywanie przeglądarki i systemu operacyjnego ...................................................... 249 Obiekt navigator ........................................................................................................ 249 Metody wykrywania przeglądarki .................................................................................. 250 Wykrywanie obiektów/możliwości ........................................................................... 250 Wykrywanie na podstawie ciągu User-Agent ............................................................ 251 (Niezbyt) krótka historia ciągu User-Agent .................................................................... 251 Netscape Navigator 3.0 i Internet Explorer 3.0 ........................................................ 252 Netscape Communicator 4.0 i Internet Explorer 4.0 ................................................ 253 Internet Explorer 5.0 i nowsze wersje ..................................................................... 254 Mozilla ................................................................................................................. 254 Opera .................................................................................................................. 256 Safari .................................................................................................................. 257 Epilog .................................................................................................................. 258 Skrypt wykrywający przeglądarkę ................................................................................. 258 Metodyka ............................................................................................................. 258 Pierwsze kroki ...................................................................................................... 259 Wykrywanie przeglądarki Opera .............................................................................. 261 Wykrywanie przeglądarek Konqueror i Safari ........................................................... 263 Wykrywanie przeglądarki Internet Explorer ............................................................... 266 Wykrywanie przeglądarki Mozilla ............................................................................. 267 Wykrywanie przeglądarki Netscape Communicator 4.x ............................................. 268 Spis treści 7 Skrypt wykrywający platformę i system operacyjny ........................................................ 269 Metodyka ............................................................................................................. 269 Pierwsze kroki ...................................................................................................... 269 Wykrywanie systemów operacyjnych Windows ......................................................... 270 Wykrywanie systemów operacyjnych dla platformy Macintosh ................................... 272 Wykrywanie uniksowych systemów operacyjnych ...................................................... 273 Pełny skrypt ............................................................................................................... 274 Przykład — strona logowania ...................................................................................... 277 Podsumowanie .......................................................................................................... 282 Rozdział 9. Wszystko o zdarzeniach ................................................................................................... 285 Zdarzenia dzisiaj ........................................................................................................ 285 Przepływ zdarzenia ..................................................................................................... 286 Rozprzestrzenianie się zdarzeń .............................................................................. 286 Przechwytywanie zdarzeń ....................................................................................... 288 Przepływ zdarzenia w modelu DOM ......................................................................... 289 Procedury obsługi zdarzeń i słuchacze zdarzeń ............................................................. 290 Internet Explorer ................................................................................................... 291 DOM .................................................................................................................... 292 Obiekt Event .............................................................................................................. 294 Lokalizacja ........................................................................................................... 294 Właściwości i metody ............................................................................................ 295 Podobieństwa ....................................................................................................... 298 Różnice ................................................................................................................ 301 Typy zdarzeń .............................................................................................................. 304 Zdarzenia myszki .................................................................................................. 304 Zdarzenia klawiatury ............................................................................................. 309 Zdarzenia HTML .................................................................................................... 311 Zdarzenia mutacji ................................................................................................. 317 Zdarzenia wspólne dla wielu przeglądarek .................................................................... 317 Obiekt EventUtil .................................................................................................... 317 Dodawanie/usuwanie procedur obsługi błędów ....................................................... 318 Formatowanie obiektu event .................................................................................. 320 Pobieranie obiektu zdarzenia ................................................................................. 324 Przykład ............................................................................................................... 325 Podsumowanie .......................................................................................................... 326 Rozdział 10. Zaawansowane techniki DOM .......................................................................................... 329 Skrypty definiujące style ............................................................................................. 329 Metody modelu DOM przetwarzające style .............................................................. 331 Własne podpowiedzi ............................................................................................. 333 Sekcje rozwijalne .................................................................................................. 334 Dostęp do arkuszy stylów ...................................................................................... 335 Style obliczane ..................................................................................................... 339 innerText i innerHTML ................................................................................................ 341 outerText i outerHTML ................................................................................................ 342 Zakresy ..................................................................................................................... 344 Zakresy w modelu DOM ......................................................................................... 344 Zakresy w Internet Explorerze ................................................................................ 355 Czy zakresy są praktyczne? ................................................................................... 359 Podsumowanie .......................................................................................................... 360 8 JavaScript. Zaawansowane programowanie Rozdział 11. Formularze i integralność danych .................................................................................... 361 Podstawowe informacje na temat formularzy ................................................................ 361 Oprogramowywanie elementu form/ ........................................................................ 363 Odczytywanie odwołań do formularza ...................................................................... 363 Dostęp do pól formularza ...................................................................................... 364 Wspólne cechy pól formularzy ................................................................................ 364 Ustawienie aktywności na pierwszym polu .............................................................. 365 Zatwierdzanie formularzy ....................................................................................... 366 Jednokrotne zatwierdzanie formularza .................................................................... 368 Resetowanie formularzy ........................................................................................ 368 Pola tekstowe ............................................................................................................ 369 Odczytywanie i zmiana wartości pola tekstowego ..................................................... 369 Zaznaczanie tekstu ............................................................................................... 371 Zdarzenia pól tekstowych ...................................................................................... 372 Automatyczne zaznaczanie tekstu .......................................................................... 372 Automatyczne przechodzenie do następnego pola ................................................... 373 Ograniczanie liczby znaków w polu wielowierszowym ................................................ 374 Umożliwianie i blokowanie wpisywania znaków w polach tekstowych ......................... 376 Liczbowe pola tekstowe reagujące na klawisze strzałek w górę i w dół ...................... 382 Pola list i listy rozwijane ............................................................................................. 384 Uzyskiwanie dostępu do opcji ................................................................................ 385 Odczytywanie i zmiana wybranych opcji ................................................................... 385 Dodawanie opcji ................................................................................................... 386 Usuwanie opcji ..................................................................................................... 388 Przenoszenie opcji ................................................................................................ 388 Zmiana kolejności opcji ......................................................................................... 389 Tworzenie pola tekstowego z automatyczną podpowiedzią ............................................. 390 Dopasowywanie .................................................................................................... 390 Główny mechanizm ............................................................................................... 391 Podsumowanie .......................................................................................................... 393 Rozdział 12. Sortowanie tabel .............................................................................................................. 395 Punkt wyjścia: tablice ................................................................................................. 395 Metoda reverse() .................................................................................................. 397 Sortowanie tabeli zawierającej jedną kolumnę .............................................................. 397 Funkcja porównania .............................................................................................. 399 Funkcja sortTable() ............................................................................................... 399 Sortowanie tabel zawierających więcej niż jedną kolumnę .............................................. 401 Generator funkcji porównania ................................................................................ 402 Zmodyfikowana funkcja sortTable() ......................................................................... 403 Sortowanie w porządku malejącym ......................................................................... 404 Sortowanie danych innych typów ............................................................................ 406 Sortowanie zaawansowane .................................................................................... 410 Podsumowanie .......................................................................................................... 414 Rozdział 13. Technika „przeciągnij i upuść” ........................................................................................ 415 Systemowa technika „przeciągnij i upuść” ................................................................... 415 Zdarzenia techniki „przeciągnij i upuść” .................................................................. 416 Obiekt dataTransfer .............................................................................................. 422 Metoda dragDrop() ................................................................................................ 426 Zalety i wady ........................................................................................................ 428 Spis treści 9 Symulacja techniki „przeciągnij i upuść” ...................................................................... 429 Kod ..................................................................................................................... 430 Tworzenie docelowych obiektów przeciągania .......................................................... 432 Zalety i wady ........................................................................................................ 434 zDragDrop ................................................................................................................. 435 Tworzenie elementu, który można przeciągać .......................................................... 435 Tworzenie docelowego obiektu przeciągania ............................................................ 436 Zdarzenia ............................................................................................................. 436 Przykład ............................................................................................................... 437 Podsumowanie .......................................................................................................... 439 Rozdział 14. Obsługa błędów ................................................................................................................. 441 Znaczenie obsługi błędów ........................................................................................... 441 Błędy i wyjątki ............................................................................................................ 442 Raportowanie błędów ................................................................................................. 443 Internet Explorer (Windows) ................................................................................... 443 Internet Explorer (Mac OS) ..................................................................................... 445 Mozilla (wszystkie platformy) ................................................................................. 446 Safari (Mac OS X) ................................................................................................. 446 Opera 7 (wszystkie platformy) ................................................................................ 448 Obsługa błędów ......................................................................................................... 449 Procedura obsługi zdarzenia onerror ....................................................................... 449 Instrukcja try…catch ............................................................................................. 452 Techniki debugowania ................................................................................................ 458 Używanie komunikatów ......................................................................................... 458 Używanie konsoli Javy ........................................................................................... 459 Wysyłanie komunikatów do konsoli JavaScriptu (tylko Opera 7+) .............................. 460 Rzucanie własnych wyjątków .................................................................................. 460 Narzędzie The JavaScript Verifier ............................................................................ 462 Debugery ................................................................................................................... 462 Microsoft Script Debugger ..................................................................................... 462 Venkman — debuger dla Mozilli ............................................................................. 465 Podsumowanie .......................................................................................................... 474 Rozdział 15. JavaScript i XML .............................................................................................................. 475 Obsługa XML DOM w przeglądarkach ........................................................................... 475 Obsługa XML DOM w Internet Explorerze ................................................................ 475 Obsługa XML DOM w Mozilli .................................................................................. 480 Ujednolicenie implementacji .................................................................................. 485 Obsługa XPath w przeglądarkach ................................................................................. 496 Wprowadzenie do XPath ........................................................................................ 496 Obsługa XPath w Internet Explorerze ...................................................................... 497 Obsługa XPath w Mozilli ........................................................................................ 498 Obsługa XSLT w przeglądarkach .................................................................................. 503 Obsługa XSLT w Internet Explorerze ....................................................................... 505 Obsługa XSLT w Mozilli ......................................................................................... 509 Podsumowanie .......................................................................................................... 511 Rozdział 16. Komunikacja między klientem a serwerem .................................................................... 513 Pliki cookies .............................................................................................................. 513 Składniki plików cookies ....................................................................................... 514 Inne ograniczenia bezpieczeństwa .......................................................................... 515 10 JavaScript. Zaawansowane programowanie Cookies w języku JavaScript .................................................................................. 515 Cookies na serwerze ............................................................................................. 517 Przekazywanie cookies między klientem a serwerem ............................................... 521 Ukryte ramki .............................................................................................................. 523 Używanie ramek iframe ......................................................................................... 524 Żądania HTTP ............................................................................................................ 526 Używanie nagłówków ............................................................................................. 528 Bliźniacze implementacje obiektu XML HTTP ........................................................... 529 Wykonywanie żądania GET ..................................................................................... 530 Wykonywanie żądania POST ................................................................................... 531 Żądania LiveConnect .................................................................................................. 532 Wykonywanie żądania GET ..................................................................................... 532 Wykonywanie żądania POST ................................................................................... 534 Inteligentne żądania HTTP .......................................................................................... 536 Metoda get() ........................................................................................................ 536 Metoda post() ...................................................................................................... 539 Zastosowania praktyczne ............................................................................................ 540 Podsumowanie .......................................................................................................... 540 Rozdział 17. Usługi sieciowe ................................................................................................................. 543 Podstawowe informacje na temat usług sieciowych ...................................................... 543 Czym jest usługa sieciowa? ................................................................................... 543 WSDL .................................................................................................................. 544 Usługi sieciowe w Internet Explorerze .......................................................................... 547 Używanie komponentu WebService ......................................................................... 547 Przykład użycia komponentu WebService ................................................................ 549 Usługi sieciowe w Mozilli ............................................................................................ 551 Rozszerzone uprawnienia ...................................................................................... 551 Używanie metod SOAP .......................................................................................... 552 Używanie obiektów proxy WSDL ............................................................................. 556 Rozwiązanie dla różnych przeglądarek .......................................................................... 560 Obiekt WebService ................................................................................................ 560 Usługa Temperature Service .................................................................................. 562 Używanie obiektu TemperatureService .................................................................... 564 Podsumowanie .......................................................................................................... 565 Rozdział 18. Praca z modułami rozszerzającymi ............................................................................... 567 Do czego służą moduły rozszerzające? ......................................................................... 567 Popularne moduły rozszerzające .................................................................................. 568 Typy MIME ................................................................................................................. 569 Osadzanie modułów rozszerzających ............................................................................ 570 Dołączanie parametrów ......................................................................................... 571 Netscape 4.x ........................................................................................................ 571 Wykrywanie modułów rozszerzających .......................................................................... 572 Wykrywanie modułów rozszerzających w stylu Netscape ........................................... 572 Wykrywanie modułów rozszerzających ActiveX ......................................................... 577 Wykrywanie modułów rozszerzających w różnych przeglądarkach ............................... 579 Aplety Java ................................................................................................................ 580 Osadzanie apletów ............................................................................................... 580 Odwołania do apletów w kodzie JavaScript .............................................................. 581 Tworzenie apletów ................................................................................................ 582 Spis treści 11 Komunikacja skryptu JavaScript z językiem Java ...................................................... 583 Komunikacja języka Java ze skryptem JavaScript ..................................................... 586 Filmy Flash ................................................................................................................ 589 Osadzanie filmów Flash ......................................................................................... 590 Odwołania do filmów Flash .................................................................................... 590 Komunikacja języka JavaScript z filmami Flash ........................................................ 591 Komunikacja Flasha z językiem JavaScript .............................................................. 594 Kontrolki ActiveX ........................................................................................................ 596 Podsumowanie .......................................................................................................... 599 Rozdział 19. Zagadnienia związane z wdrażaniem aplikacji JavaScriptu ......................................... 601 Bezpieczeństwo ......................................................................................................... 601 Polityka jednakowego pochodzenia ......................................................................... 602 Zagadnienia związane z obiektem okna .................................................................. 603 Zagadnienia dotyczące przeglądarki Mozilla ............................................................ 604 Ograniczenia zasobów ........................................................................................... 607 Zagadnienia dotyczące lokalizacji ................................................................................ 608 Sprawdzanie języka w kodzie JavaScript ................................................................. 608 Strategie umiędzynaradawiania .............................................................................. 609 Zagadnienia dotyczące ciągów znaków ................................................................... 610 Optymalizacja kodu JavaScript .................................................................................... 613 Czas pobierania .................................................................................................... 613 Czas wykonania .................................................................................................... 619 Zagadnienia dotyczące własności intelektualnej ........................................................... 635 Obfuskacja ........................................................................................................... 635 Microsoft Script Encoder (wyłącznie Internet Explorer) .............................................. 636 Podsumowanie .......................................................................................................... 637 Rozdział 20. Rozwój języka JavaScript .............................................................................................. 639 ECMAScript 4 ............................................................................................................ 639 Propozycja firmy Netscape ..................................................................................... 640 Implementacje ...................................................................................................... 646 ECMAScript dla języka XML ......................................................................................... 648 Podejście ............................................................................................................. 648 Pętla for each…in ................................................................................................. 650 Nowe klasy .......................................................................................................... 650 Implementacje ...................................................................................................... 660 Podsumowanie .......................................................................................................... 660 Skorowidz .............................................................................................................................................. 661 4 Dziedziczenie Prawdziwie obiektowy język programowania musi obsługiwać dziedziczenie, czyli możliwość korzystania (dziedziczenia) z metod i właściwości jednej klasy przez inną klasę. W poprzednim rozdziale nauczyłeś się definiować właściwości i metody klasy. Czasem chcemy, by dwie różne klasy mogły korzystać z tych samych metod. Wtedy właśnie przydaje się dziedziczenie. Dziedziczenie w praktyce Najprostszym sposobem na opisanie dziedziczenia jest posłużenie się klasycznym przykła- dem — figurami geometrycznymi. Tak naprawdę istnieją dwa typy figur płaskich: elipsy (które są okrągłe) i wielokąty (które mają pewną ilość boków). Koło to rodzaj elipsy z jed- nym ogniskiem; trójkąty, czworokąty i pięciokąty to rodzaje wielokątów z różną ilością boków. Kwadrat to rodzaj czworokąta z wszystkimi bokami równymi. Jest to idealny przy- kład powiązania dziedzicznego. W przykładzie tym „figura” (Shape) jest klasą bazową (wszystkie klasy są jej potomka- mi) dla klas „elipsa” (Ellipse) i „wielokąt” (Polygon). Elipsa ma jedną właściwość zwaną „ogniska” (foci) wskazującą ilość ognisk elipsy. Koło (Circle) jest potomkiem elipsy, więc nazywamy je podklasą elipsy, a sama elipsa jest nadklasą dla koła. Podobnie trójkąt (Triangle), czworokąt (Rectangle) i pięciokąt (Pentagon) są podklasami wielokąta, a wielokąt jest nadklasą dla każdej z tych klas. Wreszcie kwadrat (Square) jest potom- kiem czworokąta. Powiązania dziedziczne najlepiej opisać przy użyciu diagramu — w tym momencie po- mocny okazuje się uniwersalny język modelowania, czyli UML. Jednym z wielu prze- znaczeń UML jest wizualna reprezentacja złożonych powiązań między obiektami, takich jak dziedziczenie. Na rysunku 4.1 widać diagram UML opisujący związek klasy Shape z jej podklasami. 130 JavaScript. Zaawansowane programowanie Rysunek 4.1. W UML każdy prostokąt reprezentuje klasę opisaną nazwą. Linie biegnące od wierzchu trójką- ta, czworokąta i pięciokąta zbiegają się i wskazują na figurę, pokazując, że każda z tych klas jest potomkiem figury. Podobnie strzałka biegnąca od kwadratu do czworokąta sym- bolizuje powiązanie dziedziczne pomiędzy tymi klasami. Więcej na temat UML można przeczytać w książce Instant UML (Wrox Press, ISBN 1861000871). Implementacja dziedziczenia Aby zaimplementować dziedziczenie w języku ECMAScript, zaczynamy od klasy bazowej dla wszystkich potomków. Kandydatami na klasy bazowe są klasy stworzone przez pro- gramistę. Ze względów bezpieczeństwa obiekty własne i obiekty hosta nie mogą być klasami bazowymi. Zapobiega to publicznemu udostępnieniu skompilowanego kodu poziomu prze- glądarki, który mógłby potencjalnie zostać użyty w złych zamiarach. Po wybraniu klasy bazowej można przejść do tworzenia podklas. To, czy klasa bazowa bę- dzie w ogóle używana, zależy wyłącznie od nas. Czasami pojawia się potrzeba stworzenia klasy bazowej, która nie ma być wykorzystywana bezpośrednio. Zamiast tego udostępnia ona jedynie wspólne podklasom cechy funkcjonalne. W takich okolicznościach klasę bazową uważa się za abstrakcyjną. Rozdział 4. (cid:81) Dziedziczenie 131 ECMAScript nie pozwala na dosłowne definiowanie klas abstrakcyjnych, tak jak niektóre inne języki, ale czasami tworzone są klasy bazowe, które nie są przeznaczone do użytku. Zwykle jedynie w dokumentacji opisane są jako abstrakcyjne. Stworzone podklasy dziedziczą wszystkie właściwości i metody nadklasy, w tym implemen- tacje konstruktora i metod. Pamiętaj, że wszystkie właściwości i metody są publiczne, a zatem podklasy mogą się do nich odwoływać bezpośrednio. Podklasy mogą dodawać nowe właści- wości i metody niewystępujące w nadklasach lub zastępować właściwości i metody nadkla- sy własnymi implementacjami. Sposoby dziedziczenia Jak zwykle w języku ECMAScript można implementować dziedziczenie na kilka sposo- bów. Wynika to z faktu, że dziedziczenie w JavaScripcie nie jest jawne, tylko emulowane. Oznacza to, że interpreter nie obsługuje wszystkich szczegółów związanych z dziedzicze- niem. Zadaniem dla programisty jest obsługa dziedziczenia w sposób najbardziej adekwat- ny do okoliczności. Maskowanie obiektów O maskowaniu obiektów nie myślano jeszcze, kiedy opracowywano pierwszą wersję EC- MAScriptu. Koncepcja ta ewoluowała, w miarę jak programiści coraz lepiej rozumieli, jak tak naprawdę działają funkcje i, w szczególności, jak posługiwać się słowem this w kon- tekście funkcji. Rozumowanie jest następujące: konstruktor przypisuje wszystkie właściwości i metody (przy deklarowaniu klas wzorcem konstruktora) słowem this. Ponieważ konstruktor to po prostu funkcja, można uczynić konstruktor klasy ClassA metodą klasy ClassB i ją wywołać. ClassB zostanie wówczas wyposażona we wszystkie właściwości i metody zdefiniowane w kon- struktorze klasy ClassA. Na przykład, klasy ClassA i ClassB można zdefiniować następująco: function ClassA(sColor) { this.sColor = sColor; this.sayColor = function () { alert(this.sColor); }; } function ClassB(sColor) { } Jak zapewne pamiętasz, słowo kluczowe this wskazuje na bieżąco tworzony w konstrukto- rze obiekt. Jednak w metodzie this wskazuje obiekt, do którego metoda należy. Zgodnie z omawianą teorią stworzenie klasy ClassA jako normalnej funkcji, a nie jako konstruktora, tworzy pewien rodzaj dziedziczenia. Można to zrobić w konstruktorze klasy ClassB tak: function ClassB(sColor) { this.newMethod = ClassA; this.newMethod(sColor); delete this.newMethod; } 132 JavaScript. Zaawansowane programowanie W kodzie tym metoda newMethod jest przypisywana do ClassA (pamiętaj, że nazwa funkcji jest tylko wskaźnikiem na nią). Następnie metoda ta jest wywoływana poprzez przekazanie argumentu sColor z konstruktora klasy ClassB. Ostatni wiersz kodu usuwa referencję do klasy ClassA, aby nie można jej było później wywołać. Wszystkie nowe właściwości i metody muszą być dodane po wierszu, który usuwa nową meto- dę. W innym przypadku narażamy się na ryzyko nadpisania nowych właściwości i metod tymi pochodzącymi z nadklasy: function ClassB(sColor, sName) { this.newMethod = ClassA; this.newMethod(sColor); delete this.newMethod; this.sName = sName; this.sayName = function () { alert(this.sName); }; } Aby dowieść, że to działa, możemy uruchomić następujący przykład: var oObjA = new ClassA( czerwony ); var oObjB = new ClassB( niebieski , Mikołaj ); oObjA.sayColor(); oObjB.sayColor(); oObjB.sayName(); Co ciekawe, maskowanie obiektów pozwala na stosowanie dziedziczenia wielokrotnego, co oznacza, że klasa może być potomkiem kilku nadklas. Dziedziczenie wielokrotne jest reprezentowane w UML tak, jak widać na rysunku 4.2. Rysunek 4.2. Jeżeli na przykład istnieją dwie klasy ClassX i ClassY, a chcemy, by klasa ClassZ była po- tomkiem obu tych klas, to możemy napisać: function ClassZ() { this.newMethod = ClassX; this.newMethod(); delete this.newMethod; this.newMethod = ClassY; Rozdział 4. (cid:81) Dziedziczenie 133 this.newMethod(); delete this.newMethod; } Minusem jest to, że jeśli klasy ClassX i ClassY mają właściwości lub metody o tej samej na- zwie, to ClassY ma pierwszeństwo, ponieważ dziedziczenie cech po niej następuje później. Poza tym drobnym problemem dziedziczenie wielokrotne poprzez maskowanie obiektów jest proste. Ponieważ te metoda dziedziczenia zrodziła się „w praniu”, trzecia edycja ECMAScriptu wprowadza dwie nowe metody obiektu Function: call() i apply(). Metoda call() Metoda call() jest najbardziej podobna do klasycznej metody maskowania obiektów. Jej pierwszy argument to obiekt, który ma wskazywać this. Wszystkie pozostałe argumenty są przekazywane bezpośrednio do samej funkcji. Na przykład: function sayColor(sPrefix, sSuffix) { alert(sPrefix + this.sColor + sSuffix); }; var oObj = new Object(); oObj.sColor = czerwony ; // wyświetla Kolorem jest czerwony. Naprawdę ładny kolor. sayColor.call(oObj, Kolorem jest , . Naprawdę ładny kolor. ); W tym przykładzie funkcja sayColor() została zdefiniowana poza obiektem i wskazuje na sło- wo this, mimo że nie została związana z żadnym obiektem. Obiektowi oObj nadano właściwość sColor o wartości czerwony . W wywołaniu call() pierwszym argumentem jest oObj, co wskazuje, że słowo this w obrębie sayColor() powinno wskazywać wartość oObj. Drugi i trzeci argument to ciągi znakowe. Odpowiadają one argumentom sPrefix i sSuffix funkcji sayColor(), w efekcie wyświetlony zostaje tekst Kolorem jest czerwony. Naprawdę ładny kolor. . Aby wykorzystać to w schemacie dziedziczenia poprzez maskowanie obiektów, wystarczy zastąpić trzy wiersze, które przypisują, wywołują i usuwają nową metodę: function ClassB(sColor, sName) { // this.newMethod = ClassA; // this.newMethod(sColor); // delete this.newMethod; ClassA.call(this, sColor); this.sName = sName; this.sayName = function () { alert(this.sName); }; } W tym przypadku chcemy, by słowo kluczowe this w ClassA odpowiadało nowo utworzo- nemu obiektowi ClassB, przesyłamy je więc jako pierwszy argument. Drugi argument to sColor, tylko jeden dla każdej z klas. 134 JavaScript. Zaawansowane programowanie Metoda apply() Metoda apply() pobiera dwa argumenty: obiekt, który ma wskazywać this i tablicę argu- mentów do przesłania do funkcji. Na przykład: function sayColor(sPrefix, sSuffix) { alert(sPrefix + this.sColor + sSuffix); }; var oObj = new Object(); oObj.sColor = czerwony ; // wyświetla Kolorem jest czerwony. Naprawdę ładny kolor. sayColor.apply(oObj, new Array( Kolorem jest , . Naprawdę ładny kolor. )); Przykład jest taki sam jak poprzednio, ale tym razem wywoływana jest metoda apply(). W wy- wołaniu pierwszym argumentem pozostaje oObj, który dalej wskazuje, że słowo this w funkcji sayColor() ma mieć przypisaną wartość oObj. Drugi argument to tablica składająca się z dwóch ciągów, które odpowiadają argumentom sPrefix i sSuffix funkcji sayColor(). Efektem jest ponownie wyświetlenie tekstu Kolorem jest czerwony. Naprawdę ładny kolor. . Tę metodę również można użyć w miejsce trzech wierszy przypisujących, wywołujących i usuwających nową metodę: function ClassB(sColor, sName) { // this.newMethod = ClassA; // this.newMethod(sColor); // delete this.newMethod; ClassA.apply(this, new Array(sColor)); this.sName = sName; this.sayName = function () { alert(this.sName); }; } Ponownie przesyłamy this jako pierwszy argument. Drugi argument to tablica z tylko jedną wartością sColor. Zamiast tego, możemy jako drugi argument metody apply() przesłać cały obiekt arguments klasy ClassB: function ClassB(sColor, sName) { // this.newMethod = ClassA; // this.newMethod(sColor); // delete this.newMethod; ClassA.apply(this, arguments); this.sName = sName; this.sayName = function () { alert(this.sName); }; } Oczywiście, przesyłanie obiektu reprezentującego argumenty działa tylko wówczas, kiedy kolejność argumentów w konstruktorze nadklasy jest dokładnie taka sama jak kolejność ar- gumentów w podklasie. Jeżeli tak nie jest, trzeba stworzyć odrębną tablicę, aby umieścić w niej argumenty w dobrej kolejności. Można też posłużyć się wówczas metodą call(). Rozdział 4. (cid:81) Dziedziczenie 135 Wiązanie łańcuchowe prototypów Formą dziedziczenia, jaka w zamyśle miała być używana
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

JavaScript dla webmasterów. Zaawansowane programowanie
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: