Visit Mozilla.org

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:
  • Netscape wprowadził dodatkowe cechy w JavaScript 1.2, które nie zostały ujęte w ECMA-262.
  • ECMA-262 dodaje dwie nowe cechy: międzynarodowość przy użyciu Unicode, oraz niezależność od wszystkich platform. Kilka cech JavaScript 1.2, jak obiekt Date, były zależne od platformy i wykorzystywały specyficzne cechy platformy.
JavaScript 1.3 JavaScript 1.3 jest w pełnej kompatybilności z ECMA-262, Edycja 1.


JavaScript 1.3 usunął nieścisłości JavaScript 1.2 z ECMA-262, jednocześnie zachowując wszystkie dodatkowe cechy z JavaScript 1.2 za wyjątkiem operatorów == i !=, które zostały zmienione w celu zgodności z ECMA-262.
JavaScript 1.4 JavaScript 1.4 jest w pełnej kompatybilności z ECMA-262, Edycja 1.


Trzecia wersja specyfikacji ECMA nie była ukończona, kiedy JavaScript 1.4 został wydany.
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 global nie jest omawiany w dokumentacji JavaScript ponieważ nie używasz go bezpośrednio. Metody i własności obiektu global, 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 Number i String nie jest omawiany w dokumentacji JavaScript, ponieważ to co generuje, jest mało użyteczne. Konstruktor Number bez argumentów zwraca +0, a konstruktor String bez argumentów zwraca "" (pusty napis).