Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Standardní objekty BI-JSC Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti P. Štěpán PHP BI-PHP, výpis 9 1/6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>standardni objekty</h1> <script type="text/javascript"> // dalsi metody pro praci s polem var jazyky = ["Java","PHP","C#"]; // spojovani poli var jazyky2 = jazyky.concat("python",["javascript","perl"]); // alert(jazyky2); // casti pole var jazyky3 = jazyky2.slice(2); // od pozice 2 do konce // slice pro zaporne parametry odecte se od delky pole // alert(jazyky2); // alert(jazyky3); var jazyky4 = jazyky2.slice(1,4); // od 1 do 3!! // alert(jazyky4); // metoda splice (vkladani a nahrazovani) jazyky = ["Java","PHP","C#","Python"]; // vlozi na pozici 2 // jazyky2 = jazyky.splice(2,0,"javascript","perl"); // alert(jazyky); // vymaze a vlozi (na pozici 2) 2. parametr - vymazavana delka // jazyky2 = jazyky.splice(2,1,"javascript","perl"); // alert(jazyky2); // vymazane // alert(jazyky); // upravene pole // vymaze od dane pozice dany pocet prvku jazyky2 = jazyky.splice(2,1); // alert(jazyky2); // alert(jazyky); P. Štěpán PHP BI-PHP, výpis 9 2/6
// typ Date // aktualni datum (mozno udat pocet msec 1.1.1970 - parametr): var now = new Date(); // alert(now); var april = Date.parse("4/1/2001"); // americke datum; pocet msec // mozne i jine anglosaske formaty // alert(april); // 1.6.2011 10:32:30 (mesic od 0!!) // (jen prvni dva parametry povinne) var cerven = Date.UTC(2011,5,1, 10,32,20); // alert(new Date(cerven)); // stejne parametry Date, ale mistni cas // alert(new Date(cerven)); //.tostring,.tolocalstring - mirne odlisnosti v prohlizecich // alert(cerven.valueof()); // valueof = cislo-pocet msec pro datum // formatovaci metody.todatestring,.tolocaldatestring, //.tolocaltimestring, toutgstring - opet se lisi // mnoho metod get, set (getmonth(), setminutes(min),... // typ RegExp - regularni vyrazy // literalovy zapis /vzor/priznaky // priznaky(nepovinne):g - globalni, m - multiline, i - ignore case var pattern = /a(b+(c))/i; // lze pouzit i konstruktor RegExp var pattern2 = new RegExp("a(b+(c))","i"); // pozor na metaznaky // a \ v retezci - zdvojene // vlastnosti typu RegExp: global,ignorecase,multiline, // lastindex,source // lastindex - index, od ktereho bude hledana shoda. Implicite 0 // source - puvodni vyraz ve tvaru literalu // alert(pattern.lastindex); // metody RegExp // metoda exec vrati pole vysledku (+ specificke vlastnosti tohoto // pole), nebo null, není-li shoda nalezena var matches = pattern.exec("rsabbbcxyabctu"); // alert(matches.index); // 2 - pozice, kde se nasla shoda // alert(matches[0]); // podretezec, odpovidajici celemu re (abbbc) // alert(matches[1]); // podretezec, odpovidajici 1. podvyrazu // (bbbc) // alert(matches[2]); // podretezec, odpovidajici 2. podvyrazu (c) // pro globalni vzor (priznak g) nachazi pro kazde volani další // shodu (zvysuje index) P. Štěpán PHP BI-PHP, výpis 9 3/6
var shoda = pattern.test("rsabbbcxyabctu"); // true - shoda se nasla // alert(shoda); // primitivni obalove typy - umoznuje pouzivat metody na // primitivnich hodnotach var str1 = "abcdefgh"; var str2 = str1.substr(2,3); // pri cteni vytvori objekt // obaloveho typu, po pouziti se instance odstrani // typ Boolean - prilis se nepouziva // pozor pri vytvareni explicitnich instanci var falseobj = new Boolean(false); // objekt!! var result = falseobj && true; // true // typ Number var numobject = new Number(3); // obvykle automaticky // ma metody tostring, tolocalestring a valueof (vlastni cislo) // metoda tofixed vraci řetězec s daym poctem desetinnych mist var num = 5; // metoda tofixed // alert(num.tofixed(2)); // "5.00" - 2 desetinna mista // metoda toexponential vraci retezec s cislem v exponentovem tvaru // opet mozno uvest pocet des. mist num = 10; // alert(num.toexponential(1)); // "1.0e+1" // metoda toprecision - vraci bud fix nebo exp tvar - podle toho, // co je pro toto cislo vyhodnejsi. Parametr je pocet cislic (bez // exponentu) num = 99; // alert(num.toprecision(1)); // "1e+2" // alert(num.toprecision(2)); // "99" // typ String; // metody tostring, tolocalestring a valueof vraceji vlastni string // vlastnost length - pocet znaku v retezci // alert("abcd".length); // 4 // prace se znaky // alert("abcd".charat(1)); // B // alert("abcd".charcodeat(1)); // 66 // nektere prohlizece berou stringy jako pole znaku str[2] // retezeni - metoda concat, nebo operator + P. Štěpán PHP BI-PHP, výpis 9 4/6
// metody pro ziskani podretezce slice, substr a substring // 1 nebo 2 argumenty. 1. - pozice, odkud se zacina. // 2. - u slice a substring - znak, pred kterym se zastavi // 2. - u substr delka retezce (nemeni puvodni retezec) // 2. chybi - do konce // alert("abcdefghi".slice(2,5)); // od znaku 2 do (ne vcetne) 5 // alert("abcdefghi".substr(2,3)); // 2. parametr delka // zaporne argumenty: slice - pricte k delce (pocita od konce) // substr 1. pricte k delce, za druhy da nulu (prazdny retezec) // chybne IE // substring oba prevede na nulu // metody pro vyhledavani v retezci indexof a lastindexof // alert("ada".indexof("a")); // 0 // alert("ada".lastindexof("a")); // 2 // lze 2. parametr - odkud hledat // metody nastavujici velikost písmen: touppercase, tolowercase var jmeno = "andulka"; // alert(jmeno.substr(0,1).touppercase() + // jmeno.substr(1).tolowercase()); // prace s regularnimi vyrazy pro typ String - metody match, // search, replace a split var pattern = /ab+c/; // jako exec v RegExp var matches = "rsabbbcxyabctu".match(pattern); // index 1. vyskytu nebo -1 var index = "rsabbbcxyabctu".search(pattern); var nahrazene = "rsabbbcxyabctu".replace(/ab+c/,"klm"); // alert(nahrazene); // g - nahradi vsechny vyskyty var nahrazene = "rsabbbcxyabctu".replace(/ab+c/g,"klm"); // alert(nahrazene); // ve druhem argumentu (je-li retezec) lze pouzit specialni znaky, // ktere umoznuji vkladat hodnoty, ziskane pri vyhledavani. // Napr. $n predstavuje n-ty podvyraz // druhym argumentem muze byt funkce pro specielni zpracovani // (dostava parametry z vyhledavane shody) var slova = "Prvni, Druhy, Treti,Ctvrty"; var pole = slova.split(/ *, */); // alert(pole); P. Štěpán PHP BI-PHP, výpis 9 5/6
// metoda localecompare str.localcompare(porovnavany) // > 0 pro str za, porovnavany (abecedne), 0 pro shodnost,... // metoda fromcharcode // alert(string.fromcharcode(65,66,67,68)); // "ABCD" // dalsi objekty // objekt Global - zakladni konstanty a metody jsou jeho metodami: // NaN,..., parseint,... // encodeuri a encodeuricomponent - prekodovani neplatnych znaku // URI adresy // jen mezera na konci: // alert(encodeuri("http://www.my.cz/s mezerou.html")); // vsechny ("nepripustne") znaky v retezci // alert(encodeuricomponent("http://www.my.cz/s mezerou.html")); // metoda eval - interpret JavaScriptu var prikazy = "var i = 2; j = 3; alert(i+j);"; // eval(prikazy); // object Math - matematicke fce a konstanty - sin, tan, pi,... var x = Math.e; x = Math.pi; var max = Math.max(2,17,39,1); // alert(max); // podobne min // alert(math.round(1.8)); // podobne floor a ceil var min = 1, max = 6; var kostka = Math.floor(Math.random()*(max - min + 1)+ min); alert(kostka); </script> </body> </html> P. Štěpán PHP BI-PHP, výpis 9 6/6