1. Podstawowe elementy języka ecmascript v3 (JavaScript 5) Komentarze



Pobieranie 0,77 Mb.
Strona1/3
Data26.10.2017
Rozmiar0,77 Mb.
  1   2   3

Wykład 7

Język JavaScript – opis języka (punkt 1), umieszczanie kodu JavaScript w plikach HTML i XHTML (2), przykłady skryptów (punkt 3), przydatne linki (Dodatek)
1. Podstawowe elementy języka ECMAScript v3 (JavaScript 1.5)

1.1. Komentarze


  • Komentarz blokowy:miedzy znakami /* */

/* to

jest treść komentarza

*/


  • Komnetarz liniowy: od znaku // do znaku końca linii;

// to jest komentarz liniowy

1.2. Instrukcje


1.2.1. Instrukcja with

Umożliwia dostęp do właściwości i metod obiektów bez podawania przy każdym odwołaniu nazwy obiektu. Instrukcja ta spowalnia wykonanie skryptu.



Składnia
with (object)
  {  instrukcje }
Przykład

var a, b;
with (Math)

{ a =random();


   b = SQRT2;
}

1.2.2. Instrukcja if ..else

Składnia

if (warunek)

{ instrukcje; }

[else


{ instrukcje;}]

1.2.3. Instrukcja pętli while


Składnia

while (warunek)

{ instrukcje; }

1.2.4. Instrukcja pętli do...while

Składnia


do {

instrukcje

} while (warunek);

Przykład


do
  { i+=1;
    document.write(i);
} while (i<5);
1.2.5. Instrukcja pętli for

Składnia

for ([instrukcja-początkowe]; [warunek]; [instrukcja-inkrementacji])

{ instrukcje; }

Przykład


for (var i = 0; i < 5; i++)

{ document.write("i= "+ i +" "); }


1.2.6. Instrukcja pętli for..in

Pętla ta przechodzi przez wszystkie pola danego obiektu (np. elementy tablicy)



Składnia

for (zmienna in obiekt)

{ instrukcje; }

Przykład


function pokaz_obiekt(obiekt, NazwaObiektu)

{ var rezultat = "";


   for (var i in obiekt)
       { rezultat += NazwaObiektu+ "." + i + " = " + obiekt[i] + "\n"; }
   document.write(rezultat);}
1.2.7. Instrukcja label

Blok instrukcji, które mogą być wykonane podczas instrukcji break lub continue



Składnia
label:
    instrukcja

Przykład

Miejsce1:

document.writeln(("To jest instrukcja wskazana przez instrukcję label");



1.2.8. Instrukcja break

Używana do przerwania pętli, instrukcji switch lub etykiety.

Składnia

break [etykieta]

Przykład

function testBreak()

{ var i = 0;
    while (i < 6)

{ if (i == 3)

          break;

        i++; }

}
1.2.9. Instrukcja continue

Wznawia dowolną instrukcję pętli oraz etykiety



Składnia

continue [label]

Przykłady:

1) i = 0;


while (i <= 9)

{  i++;
   if ((i % 2) == 0)


      continue;
   i += 2; //po zakończeniu pętli i jest równe 11=3;4;7;8;11

}

2)



i = 0;
poczatek:

i+=1;
while (i <= 9)

{  i++;
   if ((i % 5) == 0)
      continue poczatek;
   i +=2; //po zakończeniu pętli n jest równe 11=1;4;6;9;11
}
1.2.10. Instrukcja switch

Składnia

switch (wyrażenie)


  { case etykieta1 :
       instrukcje;
      break;
   case etykieta2 :
      instrukcje;
      break;
   ...
   default : instrukcje;
}

Przykład:

switch (i)   

{ case "Ksiazki" :


      document.writeln("Wybrano ksiazki.");
      break;
   case "Czasopisma" :
      document.writeln("Wybrano czasopisma.");
      break;
    default :
      document.writeln("Taki wybór nie istnieje " + i + ".");
}
document.writeln(" Czy dokonałeś właściwego wyboru?");
1.2.11. Definiowanie zmiennych – instrukcja var

var nazwazmiennej1 [= wartosc] [..., nazwazmiennej2 [= wartosc] ]

Zmienne definiowane wewnątrz funkcji są lokalne, natromiast definiowane poza funkcją są globalne

Przykład

var num_1 = 0, num_2 = 0


1.2.12. Definiowanie stałej

Deklarowanie stałej bez mozliwości zmiany jej wartości



const nazwa1 [= wartosc] [..., nazwa2 [= wartosc] ]

const a = 7;

document.writeln("a jest równa " + a ); // a jest równa 7
1.2.13. Instrukcja export

Eksportuje właściowści, funkcje i obiekty z jednego skryptu do innego skryptu



Składnia
export name1, name2, ..., nameN
export *

1.2.14. Instrukcja import

Pozwala importować w skrypcie własności na rzecz obiektu Obiekt, funkcje oraz obiekty (nazwa1, nazwa2) ze skryptu, który eksportuje tę informację.



Składnia

import Obiekt.nazwa1, Obiekt.nazwa2, ...,Obiekt.nazwaN


import Obiekt.*
1.2.15. function

Definiowanie funkcji ze specyfikacją parametrów typu łańcuchowego, liczbowego oraz obiektowego.



Składnia
function nazwa([param] [, param] [..., param])

{ instrukcje }

Przykład 1 – deklarowanie funkcji

function cena_brutto(cena, podatek)

{ return cena*(1+podatek/100); }

Przykład 2 – warunkowe deklarowanie funkcji warunek



Przykład 3

W JavaScript operuje się na referencjach do funkcji:

function f1(a,b)

{ return a+b;}

function f2(a,b)

{ return a-b; }

switch(i)

{ case " +" : g=f1; break;

case " - " : g=f2; break;

}

document.writeln(g(1,4));



1.2.16. Instrukcja return

Specyfikuje wartość zwracaną przez funkcję.



Składnia
return expression;

Przykład


function sqr(x)

{ return x*x; }


1.2.17. Instrukcja throw

Definiowanie wyjątków użytkownika


Składnia
throw wyrażenie;
throw "Blad1";  // generowanie wyjątku z wartością łańcuchową
throw 42;          // generowanie wyjątku z wartością 42
throw true;        // generowanie wyjątkuz wartością true

Przykład:

Generowanie wyjątku z generowaniem obiektu. Należy zdefiniować obiekt, zanim zostanie przekazany do generowanego wyjatku. W bloku catch można odwoływać się do właściwości przekazanego obiektu. W przykładzie generowany jest obiekt moj_Wyjatek typu Wyjatek_uzytkownika i przekazany w instrukcji generowania wyjątku.
function Wyjatek_uzytkownika(wiadomosc)

{ this.message=wiadomosc;


   this.name=" Wyjatek_uzytkownika ";}

function Podziel (dzielnik)

{ if (dzielnik != 0)

{ return 1/dzielnik;}

else

{ moj_Wyjatek = new Wyjatek_uzytkownika ("Dzielenie przez zero");


      throw moj_Wyjatek;}
}

try


{ odwrotnosc=Podziel(liczba);}
catch (e)

{ odwrotnosc=-1;


    logMyErrors(e.message, e.name); // przekazanie obiektu wyjątku do obsługi błędu
}
1.2.18. Instrukcja try..catch

Składnia


try {
   instrukcje
}
[catch (wyjatek_var if wyrazenie)
   {instrukcje}] . . .
[catch (wyjatek_var) {instrukcje}]
[finally {instrukcje}]
Przykład 1

try


{ throw "moj_Wyjatek" }// generowanie wyjatku
catch (e)

{//obsługa wyjątku

     logMyErrors(e) } // przekazanie obiektu wyjątku do osługi błędu

Przykład 2

try

{  jakasfunkcja();} // może wygenerować dwa wyjątki


catch (e if e instanceof Type)
  {/* instrukcje obsługujące błędy typu wyjątku*/ }
catch (e if e instanceof Format)

{ /* instrukcje obsługujące błędy Format wyjątku*/ }

catch (e)

{ /* instrukcje obsługujące dowolny typ wyjątku*/


   logMyErrors(e) } // przekazanie obiektu wyjatku do obsługi błędu
Przykład 3 – instrukcje w bloku finally zawsze są wykonywane, również wtedy, gdy wystąpi wyjątek-przed błędnym zakończeniem skryptu (po stronie serwera).

Przykład ze strony http://www.programmershelp.co.uk/docs/javascript/stmt.html#1082618

openMyFile()
try {
   // tie up a resource
   writeMyFile(theData)
}
finally {
   closeMyFile() // always close the resource
}


1.3. Obiekty


Podstawowym typem obiektowym jest typ Object – wszystkie obiekty dziedziczą po typie Object. Standard ECMA opisuje także :

Chapter 1 Objects, Methods, and Properties

Array
Boolean
Date
Function
java
JavaArray
JavaClass
JavaObject
JavaPackage
Math
netscape
Number
Object
Packages
RegExp
String
sun

1) Obiekty JavaScriptu są tablicami asocjacyjnymi.



  • Dostęp do pól obiektów jest możliwy przy użyciu równoważnych notacji: obiekt.pole

  • obiekt["pole"]

  • obiekt[nr].

Obie notacje z nawiasami kwadratowymi zwyczajowo stosuje się jednak przy korzystaniu z tablic powstałych jako obiekt Array.

2) Definiowanie typu obiektu

Aby zdefiniować własny typ obiektu, należy utworzyć funkcję konstruktora:

function Obiekt1(wlasciwosc_1)

{ this.wlasciwosc_1 = wlasciwosc_1;

function metoda_1()

{ alert("Obiekt1::metoda_1()"); }

this.metoda_1 = metoda_1;

}

3) Aby utworzyć obiekt typu Obiekt1, należy skorzystać z operatora new:



var obiekt1 = new Obiekt1(2);
Nowe obiekty w JavaScripcie tworzone są na stercie. W przypadku, kiedy do danego obiektu nie istnieje już żadna referencja, mechanizm garbage collectora usuwa dany obiekt z pamięci.
4) Ponieważ metody obiektu (funkcje) są jego skladowymi, dostęp do nich jest możliwy przy użyciu notacji z kropką i notacji z nawiasami kwadratowymi. Poniższe dwie linie kodu są równoważne:

obiekt1.metoda_1();

obiekt1["metoda_1"]();


1.4. Typ Function

Funkcje są jednocześnie obiektami typu Function. Obiekt ten ma konstruktor przyjmujący jako argument ciąg znaków, stąd pewną funkcję f_1 można zdefiniować w sposób następujący:

f_1= new Function("wlasciwosc_1","return wlasciwosc_1");

Ostatni argument Function() jest treścią kodu funkcji, pozostałe to nazwy parametrów. Ten sposób tworzenia funkcji może być mało wydajny.




1.5. Dziedziczenie

W implementacjach ECMAScript V3 dziedziczenie realizowane jest przez prototypy.




1.5.1.Pierwszy sposób tworzenia dziedziczenia:

Aby utworzyć klasę Pochodna dziedziczącą po klasie Bazowa, należy ustawić pole Pochodna.prototype na nowy obiekt klasy Bazowa:


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">







Pokazy slajdów, skrypty JavaScript













  1   2   3


©operacji.org 2017
wyślij wiadomość

    Strona główna