"Advanced HTML" skyrelis

Tęsiame "Advanced HTML" skyrelį. Tai jau ne pirmasis jo leidimas - galite pasitikrinti ankstesniuosius:
"Ruby on Rails"
"Pelė uodega švystelėjo…"
"Ką delne mums neša HTML 4.0?"
"Kaip valdyti piešinių pakrovimo tvarką"
"Kaip lankytoją nukreipti į kitą WWW puslapį"
"Įlįskite į lankytojų kailį"
"Kaip sužinoti ekrano charakteristikas?"
"Vaizdi rašysena - Visual Basic Script"

JavaScript atspindžiai

Istorijos nuolaužos

Kaip parašyti interaktyvią Voratinklio programytę, kuri būtų pakankamai greita? Toks klausimas nedavė ramybės nuo pat HTML aušros. 1995-ais Netscape (pirmoji firma įsigijusi "Java" licenciją) nusprendė, kad reikia supaprastintos kalbos. Brendan Eich sukūrė kalbą, pavadintą "LiveScript". "Sun" ją pervadino į "JavaScript", - ir ji įsiliejo į mases su "Navigator 2.0". Ši kalba dar turi ECMAScript vardą, nes ją standartu pripažino ECMA.

Resursai: Nemokama "JavaScript" realizacija: www.mozilla.org/js/

Ypatybių blyksniai

Tai nėra "Java" (kaip programavimo kalba), kurios pagrindas yra klasės. "JavaScript" turi prototipų objektinę sistemą, kurioje nėra griežtos takoskyros tarp klasių ir objektų (kitos šio tipo kalbos yra ThingLab ir Self, žr. http://self.sunlabs.com). JavaScript neturi ir griežtos tipų kontrolės kompiliavimo metu.

JavaScript iliustraciją pradėsime faktorialo paskaičiavimo funkcija.

function  factorial (N) {
  if ((N > 100)  || (N < 0) ) { return -1; }
  if (N == 0) { return 1; }
  return N * factorial (N-1);
}

Panaudojimas:

<SCRIPT Language="JavaScript"> <!--
 document.write(factorial(100));
// --> </SCRIPT>

Galite pabandyti, kaip veikia faktorialo funkcija (įveskite skaičių iki 100 ir paspauskite mygtuką 'Vykdyk'):

Prototipų objektinė sistema

JavaScript objektų sukūrimui yra naudojami konstruktoriai - tai funkcija, kuri priskiria reikšmes this kintamajam. Konstruktorius iškviečiamas naudojant new operatorių. Šiame pavyzdyje pateikiame konstruktorių Automobilio objektui kurti.

// Konstruktorius
function Automobilis (firma, modelis, metai, numeris) {
 this.firma=firma;
 this.modelis=modelis;
 this.metai=metai;
 this.numeris=numeris;

 return this;
}

Panaudojimas:

<SCRIPT Language="JavaScript"><!--
 oCar = new Automobilis ("Toyota", "Camry", 1999, "LVC 063");
 document.write("
Metai: " + oCar.metai); // --> </SCRIPT>

Dabar pailiustruosime, kaip šiam objektui sukuriamas "country" metodas, nustatantis, kurioje šalyje automobilis buvo pagamintas.

// Metodas
function country () {
 if (this.firma == "Toyota") { return "Japonija" }
 else if (this.firma == "BMW") { return "Vokietija" }
 else if (this.firma == "Ford") { return "JAV" }
 else { return "Nenustatyta" }
}

Priskyrimas ir panaudojimas:

<SCRIPT Language="JavaScript"><!--
 oCar.country = country
 document.write(" Country: " + oCar.country());
// --> </SCRIPT>

Toliau - prototipo savybė yra naudojama elgsenos perdavimui tarp objektų. Iliustruosime Toyota prototipu.

// Prototipas
function Toyota (modelis, metai, mileage) {
 this.modelis=modelis;
 this.metai=metai;
 this.mileage=mileage;
}

Panaudojimas:

<SCRIPT Language="JavaScript"><!--
 Toyota.prototype = oCar;
 toy = new Toyota ("4Runner", 1999, 15)
 document.write("
Toy Country: " + toy.country()); document.write(" mylios: " + toy.mileage); // --> </SCRIPT>

Galite pabandyti, kaip tai veikia!

Kodėl JavaScript iškart tapo populiariu, o dauguma to meto eksperimentinių kalbų niekada neišplito toliau laboratorijos sienų? Ogi todėl, kad ji rado savo nišą - kaip Voratinklio klientų ir serverio pusių programavimo priemonė.

Ankstesnės "Advanced HTML" skyrelio temos:
Dygios JavaScript eilutės
Anotacijos Java kalboje
Sveikųjų skaičių žaidimai
ASP patarimų liūnas
AWK kalba - sena ir nuolat aktuali
Pelė uodega švystelėjo...
Ką delne mums neša HTML 4.0?
Kaip valdyti piešinių pakrovimo tvarką
Kaip lankytoją nukreipti į kitą WWW puslapį
Įlįskite į lankytojų kailį
Kaip sužinoti ekrano charakteristikas?
Vaizdi rašysena - Visual Basic Script
Programavimo kalbų klegesys
Perfokortos ir jų istorija
Kaip atsiranda piešinukai?
Ateities kalbos?

JavaScript pradmenys
Java 8: Optional prieš null
Vartiklis