b'\n_START_ARTICLE_\nJavaScript\n_START_PARAGRAPH_\nJavaScript\xc2\xa0\xe2\x80\x93 objekti\xc5\xa1kai orientuota skript\xc5\xb3 programavimo kalba, besiremianti prototip\xc5\xb3 principu. Da\xc5\xbeniausiai kalba naudojama internetini\xc5\xb3 puslapi\xc5\xb3 interaktyvumo realizacijai, bet taip pat naudojama ir kaip galimyb\xc4\x97 skriptais manipuliuoti tam tikromis programomis. Kalba sukurta Brendano Eicho Netscape kompanijoje ir pavadinta Mocha, v\xc4\x97liau pervadinta \xc4\xaf LiveScript, ir galiausiai tapo JavaScript. Vienas i\xc5\xa1 argument\xc5\xb3 pervadinant kalb\xc4\x85 buvo sintaksinis pana\xc5\xa1umas su Java kalba. Paskutin\xc4\x97 JavaScript versija\xc2\xa0\xe2\x80\x93 1.8.\n_START_SECTION_\nSusijusios kalbos\n_START_PARAGRAPH_\nNors JavaScript ir Java kalb\xc5\xb3 pavadinimai pana\xc5\xa1\xc5\xabs, pa\xc4\x8dios kalbos n\xc4\x97ra susijusios\xc2\xa0\xe2\x80\x93 abi kalbos per\xc4\x97m\xc4\x97 C kalbos sintaks\xc4\x99, bet semanti\xc5\xa1kai jos labai skiriasi, taip pat visi\xc5\xa1kai nesuderinami yra j\xc5\xb3 objektiniai modeliai._NEWLINE_Po JavaScript kaip svetaini\xc5\xb3 skript\xc5\xb3 ra\xc5\xa1ymo kalbos s\xc4\x97km\xc4\x97s, Microsoft suk\xc5\xabr\xc4\x97 suderinam\xc4\x85 kalb\xc4\x85 JScript, kurios palaikymas \xc4\xafdiegtas Internet Explorer nar\xc5\xa1ykl\xc4\x97s 3.0 versijoje, 1996 met\xc5\xb3 viduryje. V\xc4\x97liau abi \xc5\xa1ios kalbos apjungtos \xc4\xaf vien\xc4\x85 ECMAScript standart\xc4\x85. Nors JavaScript ir JScript sintaksi\xc5\xa1kai ir semanti\xc5\xa1kai suderinamos, nar\xc5\xa1ykl\xc4\x97s palaiko skirtingus dokumento objektinius modelius (DOM), d\xc4\x97l to skriptas, veikiantis vienoje nar\xc5\xa1ykl\xc4\x97je, gali neveikti kitoje.\n_START_SECTION_\nNaudojimas\n_START_PARAGRAPH_\nJavaScript kalbos sintaks\xc4\x97 perimta i\xc5\xa1 C kalbos, su kitais komponentais bendraujama per s\xc4\x85sajas (dokumento objektin\xc4\xaf model\xc4\xaf), palaikoma Unicode, reguliarios i\xc5\xa1rai\xc5\xa1kos (regular expresions), taip pat teksto vykdymas naudojant eval funkcij\xc4\x85._NEWLINE_Paprastai JavaScript kalbos kodas \xc4\xaftraukiamas \xc4\xaf HTML puslapius, tokiu b\xc5\xabdu i\xc5\xa1ple\xc4\x8diant statinius HTML puslapius dinaminiu skripto funkcionalumu\xc2\xa0\xe2\x80\x93 galimas anket\xc5\xb3 parametr\xc5\xb3 tikrinimas, nauj\xc5\xb3 lang\xc5\xb3 atidarymas, suskleid\xc5\xbeiamos hierarchin\xc4\x97s strukt\xc5\xabros rodymas, i\xc5\xa1siskleid\xc5\xbeiantis meniu ir daug kit\xc5\xb3 interaktyvumo form\xc5\xb3._NEWLINE_JavaScript kalba remiasi kelios pagrindin\xc4\x97s svetaini\xc5\xb3 k\xc5\xabrimo metodologijos\xc2\xa0\xe2\x80\x93 DHTML (Dinaminis HTML), AJAX, SPA._NEWLINE_Taip pat JavaScript naudojamas \xc4\xafvairiuose \xc4\xafrankiuose\xc2\xa0\xe2\x80\x93 pavyzd\xc5\xbeiui, Adobe Acrobat ir Adobe Reader programos leid\xc5\xbeia naudoti skriptus PDF faile.\n_START_SECTION_\nKalbos elementai\n_START_PARAGRAPH_\nNematom\xc5\xb3 simboli\xc5\xb3 (tarpo simbolis, Tab simbolis, naujos eilut\xc4\x97s simboliai) naudojimas \xc5\xa1iek tiek skiriasi nuo C kalbos, nes \xc4\x8dia tokie simboliai gali tiesiogiai veikti semantik\xc4\x85. Naudojama \xe2\x80\x9ekabliata\xc5\xa1kio \xc4\xafterpimo\xe2\x80\x9c technologija, t. y. bet kuri pilnai suformuota eilut\xc4\x97 laikoma u\xc5\xbebaigta\xc2\xa0\xe2\x80\x93 taip, lyg eilut\xc4\x97s gale b\xc5\xabt\xc5\xb3 pad\xc4\x97tas kabliata\xc5\xa1kis. Tokiu b\xc5\xabdu net neatskiriant atskirose eilut\xc4\x97se esan\xc4\x8di\xc5\xb3 sakini\xc5\xb3 kabliata\xc5\xa1kiais, skriptas bus s\xc4\x97kmingai vykdomas. Ta\xc4\x8diau programuotojams visgi rekomenduojama tvarkingai d\xc4\x97ti kabliata\xc5\xa1kius, nes pagerinamas kodo skaitomumas ir i\xc5\xa1vengiama \xc5\xa1alutini\xc5\xb3 kabliata\xc5\xa1ki\xc5\xb3 \xc4\xafterpimo technologijos efekt\xc5\xb3._NEWLINE_Komentarai naudojami kaip C++ kalboje\xc2\xa0\xe2\x80\x93 /* \xe2\x80\xa6 */ bloko komentavimui ir \xe2\x80\x9e//\xe2\x80\x9c likusios eilut\xc4\x97s dalies komentavimui._NEWLINE_Kintamieji yra dinamini\xc5\xb3 tip\xc5\xb3, neb\xc5\xabtina kintam\xc5\xb3j\xc5\xb3 apra\xc5\xa1yti prie\xc5\xa1 naudojant. Funkcijoje i\xc5\xa1reik\xc5\xa1tinai (naudojant var bazin\xc4\xaf \xc5\xbeod\xc4\xaf) apra\xc5\xa1yt\xc5\xb3 kintam\xc5\xb3j\xc5\xb3 galiojimo erdv\xc4\x97 yra ribota \xc5\xa1iai funkcijai, kiti kintamieji yra global\xc5\xabs.\n_START_SECTION_\nObjektai\n_START_PARAGRAPH_\nJavaScript kalbos objektai suteikia galimyb\xc4\x99 susieti savybes su reik\xc5\xa1m\xc4\x97mis. Yra keletas bazini\xc5\xb3 objekt\xc5\xb3 (masyvas, loginiai kintamieji, data, funkcija, skai\xc4\x8dius, matematini\xc5\xb3 operacij\xc5\xb3 klas\xc4\x97, reguliarios i\xc5\xa1rai\xc5\xa1kos, tekstin\xc4\x97s eilut\xc4\x97s). Kiti objektai apra\xc5\xa1omi vykdymo metu._NEWLINE_Objektai apra\xc5\xa1omi sukuriant konstruktoriaus funkcij\xc4\x85. Kadangi JavaScript kalba remiasi prototipais, yra objekt\xc5\xb3, bet ne klasi\xc5\xb3 paveld\xc4\x97jimas. Objektai paveldi savybes i\xc5\xa1 prototip\xc5\xb3, bet galima vienam ar kitam objektui dinami\xc5\xa1kai prid\xc4\x97ti savybi\xc5\xb3 (metod\xc5\xb3 ar kintam\xc5\xb3j\xc5\xb3), taip pat ir panaikinti savybes. Norint prid\xc4\x97ti savyb\xc4\x99 visiems to tipo objektams, reikia j\xc4\x85 prid\xc4\x97ti prototipe, kitaip tai galios tik konkre\xc4\x8diam objektui, bet ne tipui._NEWLINE_Objekt\xc5\xb3 naikinim\xc4\x85 reguliuoja \xc5\xa1iuk\xc5\xa1li\xc5\xb3 surinkimo mechanizmas, d\xc4\x97l to neb\xc5\xabtina r\xc5\xabpintis objekt\xc5\xb3 \xc5\xa1alinimu pabaigus naudoti.\n_START_SECTION_\nPavyzdys\n_START_PARAGRAPH_\n// konstruktoriaus funkcijafunction Ta\xc5\xa1kas(x, y) {_NEWLINE_  this.x = x;_NEWLINE_  this.y = y;}// objekto suk\xc5\xabrimasobj = new Ta\xc5\xa1kas(12, 1000);// atributo naudojimasalert(obj.x);// kitas b\xc5\xabdas naudoti objekto atributus kaip \xc5\xbeodyno element\xc4\x85alert(obj["attributeA"]);// dinami\xc5\xa1kai pridedamas atributasobj.laikas = new Date();// atributo i\xc5\xa1metimasdelete obj.x;// objekto sunaikinimasdelete obj;_NEWLINE_Paveld\xc4\x97jimas ir prototipai:_NEWLINE_function Base() {_NEWLINE_  this.Override = function() {_NEWLINE_    alert("Base::Override()");_NEWLINE_  }_NEWLINE__NEWLINE_  this.BaseFunction = function() {_NEWLINE_    alert("Base::BaseFunction()");_NEWLINE_  }}function Derive(){_NEWLINE_   this.Override = function() {_NEWLINE_     alert("Derive::Override()");_NEWLINE_   }}Derive.prototype = new Base();\n_START_SECTION_\nDuomen\xc5\xb3 strukt\xc5\xabros\n_START_PARAGRAPH_\nTipin\xc4\x97 duomen\xc5\xb3 strukt\xc5\xabra\xc2\xa0\xe2\x80\x93 masyvas, kuriame skai\xc4\x8diai (indeksai) susiejami su reik\xc5\xa1m\xc4\x97mis. Galimyb\xc4\x97 susieti skai\xc4\x8di\xc5\xb3 su reik\xc5\xa1me yra ir kituose tipuose, bet masyvai turi ir specializuot\xc4\x85 funkcionalum\xc4\x85 (suliejimas, prid\xc4\x97jimas \xc4\xaf gal\xc4\x85 ir pan), taip pat masyvai turi masyvo dyd\xc4\xaf nusakant\xc4\xaf atribut\xc4\x85 (length).\n_START_SECTION_\nValdymo strukt\xc5\xabros\n_START_PARAGRAPH_\nJavaScript s\xc4\x85lygini\xc5\xb3 bei i\xc5\xa1rinkimo sakini\xc5\xb3, taip pat cikl\xc5\xb3 for, while bei do .. while sintaks\xc4\x97 analogi\xc5\xa1ka C kalbos sintaksei. Taip pat \xc4\xafgyvendintas for .. in ciklas, supaprastinantis objekto atribut\xc5\xb3 perrinkim\xc4\x85, naudojant i\xc5\xa1rai\xc5\xa1k\xc4\x85 for (kintamasis in objektas).\n_START_SECTION_\nFunkcijos\n_START_PARAGRAPH_\nKaip ir daugelyje kalb\xc5\xb3, JavaScript funkcijos\xc2\xa0\xe2\x80\x93 tai galimai parametrizuoti kodo blokai, galintys gra\xc5\xbeinti reik\xc5\xa1m\xc4\x99. Funkcijos apra\xc5\xa1ymo pavyzdys:_NEWLINE_  function funkcijosVardas(arg1, arg2, arg3) {_NEWLINE_     sakiniai;_NEWLINE_     return i\xc5\xa1rai\xc5\xa1ka;_NEWLINE_  }_NEWLINE_Kiekviena funkcija yra objektas, kurio tipas yra Function, tod\xc4\x97l bet kuria funkcija galima manipuliuoti kaip ir kitais objektais, pavyzd\xc5\xbeiui, naudoti kaip kitos funkcijos parametr\xc4\x85. Kvie\xc4\x8diant funkcij\xc4\x85, neb\xc5\xabtina perduoti tiek parametr\xc5\xb3, kiek i\xc5\xa1vardinta funkcijos apra\xc5\xa1yme\xc2\xa0\xe2\x80\x93 neperduot\xc5\xb3 argument\xc5\xb3 reik\xc5\xa1m\xc4\x97s bus neapibr\xc4\x97\xc5\xbetos.'