Przewodnik po języku JavaScript 1.5:Przegląd JavaScriptu
z Mozilla Developer Center, polskiego centrum programistów Mozilli.
UWAGA: Tłumaczenie tej strony nie zostało zakończone.
Może być ona niekompletna lub wymagać korekty.
Chcesz pomóc? | Dokończ tłumaczenie | Sprawdź ortografię | Więcej takich stron...
Spis treści |
[edytuj] Czym jest JavaScript?
JavaScript jest wieloplatformowym, zorientowanym obiektowo językiem skryptowym. JavaScript jest małym i lekkim językiem; nie jest używany jako samodzielny język, został bowiem zaprojektowany do łatwego osadzania w innych produktach i aplikacjach, jak na przykład przeglądarkach internetowych. Wewnątrz swojego bazowego środowiska, JavaScript może być połączony z obiektami otoczenia, w którym się znajduje, aby zapewnić nad nim programową kontrolę.
Funkcjonalność JavaScript pozwala na umieszczanie obiektów takich jak Array, Date i Math oraz elementów języka takich jak operatory, struktury kontrolne i instrukcje. Możliwości JavaScript mogą być rozszerzane do rozmaitych celów, przez uzupełnianie dodatkowymi obiektami; na przykład:
- Client-side JavaScript rozszerza jądro języka poprzez zapewnienie obiektom kontroli przeglądarce (Navigator lub następna przeglądarka sieciowa) i jej Document Object Model (DOM). Na przykład, rozszerzenia client-side (po stronie klienta) pozwalają aplikacjom na wgrywanie elementów w HTML pochodzące i odpowiadające zdarzeniom użytkownika także jako kliknięcia myszy, obsługa formularza, i nawigacja stroną www.
- Server-side JavaScript rozszerza jądro języka poprzez zapewnienie obiektom stosownych uruchomień serwera JavaScript. Na przykład, server-side (po stronie serwera) pozwala na rozszerzenie aplikacji do komunikacji z relacyjną bazą danych, ciągle dostarczając na bieżąco informacje wystarczy, tylko jedno wywołanie następnej aplikacji, przedstawiając ile manipulacji jest na serwerze.
Poprzez funkcjonalność LiveConnect JavaScriptu, jak chcesz możesz kod Java i JavaScript połączyć z każdym innym. Z JavaScript, możesz błyskawicznie przejść do obiektu Java i uzyskać dostęp ich publicznych metod i pól. Z Java, możesz uzyskać dostęp do obiektów JavaScript, właściwości, i metod.
JavaScript został wymyślona przez Netscape i była pierwszym językiem użytym w przeglądarce Netscape.
[edytuj] JavaScript i Java
JavaScript i Java są podobne pod pewnymi względami, ale fundamentalnie różnią się w innych. Język JavaScript jest podobny do Javy, ale nie posiada statycznego typowania, ani mocnego sprawdzania typów. JavaScript wspiera w większości składnię wyrażeń Javy i podstawowe konstrukcje sterujące.
W przeciwieństwie do kompilowanego systemu Javy, używającego deklaracji klas, JavaScript obsługuje system interpretowany podczas wykonania, bazujący na małej ilości typów danych reprezentujących liczby, typ logiczny (Boolean) i ciągi tekstowe. JavaScript posiada model obiektów oparty o prototypy zamiast częściej spotykanego modelu opartego o klasy. Model ten wprowadza dynamiczne dziedziczenie, to znaczy, że dziedziczone składniki mogą być różne dla każdego konkretnego obiektu. JavaScript dodatkowo obsługuje funkcje, które nie deklarują wymagań co do typu argumentów lub zwracanych wartości. Funkcje mogą być właściwościami obiektów, wywoływanymi jako metody zachowujące informacje o typie.
JavaScript ma o wiele swobodniejszą formę w porównaniu z Javą. Nie musisz deklarować wszystkich zmiennych, klas i metod. Nie musisz się zastanawiać, które metody są publiczne, prywatne lub chronione, i nie musisz implementować interfejsów. Zmienne, parametry i funkcje zwracają typy, które nie są jawnie określane.
Java jest językiem bazującym na klasach, zaprojektowanym z myślą o szybkości wykonania i bezpieczeństwie typów. Bezpieczeństwo typów oznacza na przykład, że nie możesz konwertować w Javie liczby na referencję do obiektu, lub odnieść się do prywatnej pamięci poprzez nadpisywanie Bajtkodów Javy. Model bazujący na klasach (class-based) oznacza, że programy polegają tylko na klasach i ich metodach. Dziedziczenie w Javie i ścisłe sprawdzanie typów wymaga z reguły ściślej zaprojektowanych powiązań w hierarchii klas. Te wymagania sprawiają, że programowanie w Javie jest bardziej złożone niż w JavaScript.
Dla odróżnienia, JavaScript pochodzi z linii mniejszych, dynamicznie typowanych języków jak HyperTalk i dBASE. Języki te oferują narzędzia programistyczne przeznaczone do użycia przez szersze grono, ze względu na prostszą składnię, wbudowaną wyspecjalizowaną funkcjonalność i mniejsze wymagania co do tworzenia obiektów.
| JavaScript | Java |
|---|---|
| Zorientowany obiektowo (Object-oriented). Nie odróżnia się typów obiektów. Dziedziczenie odbywa się poprzez mechanizm prototypownia, właściwości i metody mogą być dodawane dynamicznie do wszystkich obiektów. | Class-based. Obiekty są podzielone na klasy i instancje, dziedziczenie odbywa się w całości poprzez hierarchię klas. Klasy i instancje nie mogą mieć właściwości ani metod dodawanych dynamicznie. |
| Zmienne i ich typy nie muszą być deklarowane (są deklarowane dynamicznie). | Zmienne i ich typy muszą być deklarowane (są typowane statycznie). |
| Nie ma możliwości zapisu na dysk twardy. | Nie ma możliwości zapisu na dysk twardy. |
Tabela: Różnice między językami Java a JavaScript
Więcej informacji na temat różnic pomiędzy JavaScript i Java zobaczyć możesz w dziale Detale modelu obiektowego.
[edytuj] JavaScript i specyfikacja ECMA
JavaScript została wymyślona przez Netscape i po raz pierwszy został użyta w przeglądarce Netscape. Jakkolwiek, Netscape pracował z ECMA (European Computer Manufacturers Association) aby wprowadzić ustandardyzowany, międzynarodowy język programowania bazujący na czystym JavaScript. ECMA jest międzynarodową organizacją standardów dla informacji i komunikacji systemowej. Ujednolicili oni wersję JavaScript nazwaną ECMAScript, któa zachowuje się tak samo we wszystkich aplikacjach wspierających ten standard. Firmy mogą używać otwartego standardu tego języka do rozwijania własnych implementacji Javascript. Pierwsza wersja tego standardu ECMA jest udokumentowana w specyfikacji ECMA-262.
Satndard ECMA-262 jest także zaaprobowany przez ISO (International Organization for Standards) jako ISO-16262. Możesz znaleźć wersję PDF standardu ECMA-262 na stronach internetowych Mozilla. Specyfikację możesz także znaleźć na stronach internetowych ECMA. Specyfikacja ECMA nie opisuje Obiektowego Modelu Dokumentu (ang. Document Object Model, DOM), który jest ustandaryzowany przez World Wide Web Consortium (W3C). DOM definiuje sposób w który obiekty dokumkentu HTML są wyświetlane przez twoje skrypty.
[edytuj] Związek pomiędzy JavaScript, a wersją ECMA
Netscape ściśle współpracuje z ECMA podczas tworzenia specyfikacji ECMA. Poniższa tabela opisuje relacje pomiędzy JavaScript i wersjami ECMA.
| Wersja JavaScript | Związek z wersją ECMA |
|---|---|
| JavaScript 1.1 | ECMA-262, Edycja 1 bazuje na JavaScript 1.1. |
| JavaScript 1.2 | ECMA-262 nie była ukończona, kiedy JavaScript 1.2 został wydany. JavaScript 1.2 nie jest w pełni kompatybilny z pierwszą edycją ECMA-262, z kilku powodów:
|
| JavaScript 1.3 | JavaScript 1.3 jest w pełnej kompatybilności z ECMA-262, Edycja 1.
|
| JavaScript 1.4 | JavaScript 1.4 jest w pełnej kompatybilności z ECMA-262, Edycja 1.
|
| JavaScript 1.5 | JavaScript 1.5 jest w pełnej kompatybilności z ECMA-262, Edycja 3. |
Tabela: JavaScript i wersja ECMA
Uwaga: ECMA-262, Edycja 2 składała się ze zmian edycyjnych i poprawek błędów w pierwszej wersji specyfikacji. TC39, grupa robocza w ECMA, obecnie pracuje nad edycją czwartą, która ma towarzyszyć przyszłemu wydaniu JavaScript w wersji 2.0.
Przewodnik po języku JavaScript 1.5 wskazuje, które cechy języka są zgodne z ECMA.
JavaScript zawsze będzie zawierał cechy, które nie są częścią specyfikacji ECMA; JavaScript jest kompatybilny z ECMA, i jednocześnie wprowadza dodatkowe cechy.
[edytuj] Dokumentacja JavaScript w porównaniu ze specyfikacją ECMA
Specyfikacja ECMA jest zbiorem wymagań dla implementacji ECMAScript; jest użyteczna, jeśli chcesz określić, która cecha JavaScript jest obsługiwana w ECMA. Jeśli zamierzasz pisać kod JavaScript, który używa tylko cech obsługiwanych przez ECMA, wtedy powinieneś zainteresować się specyfikacją ECMA.
Dokumentacja ECMA nie jest pisana jako pomoc dla twórców skryptów; używaj dokumentacji JavaScript, jeśli chcesz zdobyć informacje o pisaniu skryptów.
[edytuj] Terminologia JavaScriptu i ECMA
Specyfikacja ECMA używa terminologii i składni, która może być obca dla programisty JavaScript. Chociaż opis języka może się różnić w ECMA, język jako taki pozostaje ten sam. JavaScript obsługuje całą funkcjonalność przedstawioną w specyfikacji ECMA.
Dokumentacja JavaScript opisuje aspekty języka, które są istotne dla programisty JavaScript. Na przykład:
- Obiekt
globalnie jest omawiany w dokumentacji JavaScript ponieważ nie używasz go bezpośrednio. Metody i własności obiektuglobal, które są dla Ciebie użyteczne są omawiane w dokumentacji JavaScript, ale są nazywane funkcjami i własnościami najwyższego poziomu (ang. top-level). - Konstruktor bezparametrowy (zero-argument) w obiektach
NumberiStringnie jest omawiany w dokumentacji JavaScript, ponieważ to co generuje, jest mało użyteczne. KonstruktorNumberbez argumentów zwraca +0, a konstruktorStringbez argumentów zwraca "" (pusty napis).