Vestavěné vlastnosti, funkce a objekty

Některé vlastnosti a funkce JavaScriptu nejsou vázány k žádnému objektu a jsou implementovány přímo do jádra jazyka JavaScript.

Vlastnost Infinity

Hodnotou vestavěné vlastnosti Infinity je hodnota reprezentující kladné nekonečno, která umožňuje například porovnávat vypočtené hodnoty s nekonečnem:

function jeInfinity(hodnota) {
return (hodnota == Infinity)
}

Vlastnost NaN

Vestavěná vlastnost NaN obsahuje hodnotu reprezentující speciální číselnou hodnotu NaN (Not a Number) vznikající při neúspěšné konverzi řetězcových hodnot na číslo. Hodnota NaN není rovna žádné hodnotě ani sama sobě a proto pro testování této hodnoty je třeba využít funkci isNaN vestavěnou do jádra JavaScriptu:

var Prom = (NaN == NaN)
/* proměnná Prom má hodnotu false */

Vlastnost undefined

Vlastnost undefined reprezentuje nedefinovanou hodnotu undefined, která může posloužit k testování proměnné, zda proměnná tuto hodnotu neobsahuje:

function Nedefinovana(hodnota) {
return (hodnota == undefined)
}

Funkce isNaN

Pro testování speciální číselné hodnoty NaN lze použít funkci isNaN, která vrací true, je–li hodnotou jejího parametru NaN:

if (isNaN(hodnota)) …

Funkce isFinite

Pro testování zda je hodnota konečná, není ani záporné ani kladné nekonečno či NaN, existuje funkce isFinite vracející true v případě, že hodnotou jejího parametru je konečná hodnota:

if (isFinite(hodnota)) …

Funkce escape a unescape

Funkce escape slouží k překladu znaků, které nejsou čísly, písmeny, aritmetickými operátory ( *, /, +, - ) nebo znakem podtržítko ( _ ), na takzvané escape sekvence, tvořené trojicí znaků %XX, kde XX jsou dvě hexadecimální číslice vyjadřující vnitřní kód překládaného znaku:

escape("1#b") == "1%23b"

Funkce unescape funguje inverzním způsobem:

unescape("1%23b") == "1#b"

Funkce eval

Parametrem funkce eval je řetězec – posloupnost příkazů JavaScriptu oddělených středníky. Funkce eval vyhodnotí svůj parametr a vrátí hodnotu posledního příkazu v posloupnosti:

var cislo = eval("2+3")
/* proměnná cislo má hodnotu 5 */

Funkce parseFloat

K překladu textového tvaru čísel do vnitřní reprezentace, která je potřebná k provádění aritmetických operací slouží funkce parseFloat. Parametrem funkce parseFloat je řetězec, jehož hodnotou je správný tvar celého, desetinného nebo semilogaritmického čísla včetně znaménka:

var cislo = parseFloat("-2.59e-2")
/* proměnná cislo má hodnotu –0.0259 */

Pokud funkce parseFloat narazí při překladu parametru na znak, který nelze přeložit jako součást čísla, překlad je ukončen a zbytek řetězce je ignorován. Pokud je již prvním znakem nepřeložitelný znak, vrací funkce parseFloat hodnotu NaN:

var cislo = parseFloat("-2.5K9e-2")
/* proměnná cislo má hodnotu -2.5 */
var cislo2 = parseFloat("K-2.59e-2")
/* proměnná cislo2 má hodnotu NaN */

Funkce parseInt

Funkce parseInt slouží k překladu textového tvaru celých čísel do vnitřní reprezentace, jejím prvním parametrem je opět řetězec jehož hodnotou je správný tvar celého čísla, jako druhým, nepovinným parametrem, je hodnota základu, ve kterém má být číslo vyjádřeno. Pokud vynecháme druhý parametr:

Pokud funkce narazí na první nepřeložitelný znak, překlad končí a zbytek řetězce je ignorován, pokud je již první znak nepřeložitelný, vrací funkce hodnotu NaN:

var cislo = parseInt("K",16)
/* proměnná cislo má hodnotu NaN */
var cislo2 = parseInt("FF",16)
/* proměnná cislo2 má hodnotu 255 */
var cislo3 = parseInt("1010",2)
/* proměnná cislo3 má hodnotu 10 */

Funkce Number

Funkce slouží ke konverzi objektu na číslo. Pokud je funkce Number použita na objekt typu String, který neobsahuje textový tvar čísla, vrací funkce NaN. Při použití funkce Number na objekt Date, vrací funkce počet milisekund uplynulých od půlnoci 1. ledna 1970 UTC do okamžiku určeného příslušným objektem Date:

var Vterina = new Date("Jan 1, 1970 00:00:01 UTC")
var Uplynulo = Number(Vterina)
/* proměnná vteřina má hodnotu 1000 */

Funkce String

Funkce String slouží ke konverzi objektu zadaného jako parametr na řetězec. Funkce vrací stejnou hodnotu jako volání metody toString příslušného objektu. Pouze u objektu Date vrací funkce String řetězcovou hodnotu popisující časový okamžik reprezentovaný objektem Date:

var Okamzik = new Date("Sep 2, 1978 22:05:27")
var Retezec = String(Okamzik)
/* proměnná Retezec obsahuje řetězec zobrazující datum */

Funkce taint a untaint

Funkce taint a untaint jsou součástí tzv. Modelu špinavých dat, který byl pokusně zaveden v JavaScriptu 1.1, v JavaScriptu 1.2 se již neobjevil. Protože je důležité, aby mohl uživatel kontrolovat, která data jsou odesílána JavaScriptovým programem na server, jsou do jádra JavaScriptu přidány funkce taint a untaint. Parametrem funkce taint je proměnná, vlastnost objektu, funkce nebo objekt. Funkce vrací označenou kopii elementu, kterou JavaScriptový program nesmí bez uživatelova schválení odeslat na server. Funkce untaint pracuje inverzním způsobem, vrací neoznačenou kopii elementu označeného funkcí taint:

var Neoznaceny_Date = untaint(taint(new Date()))

Objekt Array

K reprezentaci polí v JavaScriptu slouží do jazyka vestavěný objekt Array. Objekty Array se vytvářejí stejnojmenným konstruktorem, pomocí něhož se pole vytváří buď udáním počtu položek pole:

var pole = new Array(počet_položek)

nebo uvedením výčtu obsahů položek pole oddělených čárkou:

var pole = new Array("první","druhá","třetí")

V JavaScriptu existuje také polní literál, předepsaný tvar pro vyjadřování polí, seznam prvků pole, oddělených čárkou, uzavřený do hranatých závorek:

var pole = [1, 2, 3, "konec"]

Protože je pole v JavaScriptu objekt Array, přidává se položka do pole stejně, jako se přidávají vlastnosti určené číslem do objektu: přiřadíme hodnotu do dosud neexistující položky pole:

pole[3] = "čtvrtá"

Při rozšíření pole položkou (vlastností určenou číselně) je automaticky modifikována vlastnost pole length, pokud je však vytvořeno nesouvislé pole, nastaví se vlastnost length na hodnotu nejvyššího použitého indexu položky a dále tedy nevyjadřuje počet položek pole.

Do objektu Array je také možné přidat vlastnost určenou jménem, do vlastnosti length se však přítomnost vlastností určených jménem nijak nepromítne:

pole["dalsi"] = "Ahoj!"

je ekvivalentní:

pole.dalsi = "Ahoj!"

V JavaScriptu lze vytvořit i pole dvourozměrné a sice jako pole odkazů na jiná pole, prvky dvourozměrného pole indexujeme: název_pole[index1, index2]:

var matice3x3 = new Array(3)
for (var i in matice3x3)
matice3x3[i] = new Array(3)

Vlastnosti objektů Array

Metody objektů Array

var Pole = new Array(1, 2, 3)
var Dalsi = new Array(4, 5, 6)
var Spojene = Pole.concat(Dalsi)
/* hodnotami prvků pole Spojene jsou čísla 16 */

var datum = new Array('Sep', 2, 1978)
var vcelku = datum.join("–")
/* proměnná vcelku má hodnotu 'Sep–2–1978' */

var Pole = new Array(1, 2, 3)
var Odstraneno = Pole.pop()
/* proměnná Odstraneno má hodnotu 3 a pole Pole obsahuje prvky s hodnotami 1 a 2 */

var Pole = new Array(1, 2)
var Delka = Pole.push(3, 4)
/* pole Delka obsahuje prvky s hodnotami 1 až 4 */

var Pole = new Array(1, 2, 3)
var Odstraneny = Pole.shift()
/* proměnná Odstraneny má hodnotu 1 a pole Pole obsahuje prvky s hodnotami 2 a 3 */

var Pole = new Array(1, 2, 3, 4)
var Odstraneno = Pole.splice(1, 2, 5, 6)
/* pole Pole obsahuje prvky s hodnotami 1, 5, 6, 4 a pole Odstraneno obsahuje prvky s hodnotami 2 a 3 */

function Usporadej (a, b){
if (a < b) return -1
if (a > b) return 1
return 0
}

var cisla = new Array (3, 8, 4, 6)
cisla.sort(Usporadej)
/* pole Usporadej obsahuje prvky s hodnotami 3, 4, 6, 8 */

var Pole = new Array(1, 2, 3)
var Nova_delka = Pole.unshift(-1, 0)
/* pole Pole obsahuje hodnoty –13 a proměnná Nova_delka má hodnotu 5 */

var Pole = new Array(1, 2, 3)
var Typ_prvku = Pole.valueOf()
/* proměnná Typ_prvku má hodnotu "number" */

Objekt Boolean

Objekt Boolean je objektem obalujícím primitivní datový typ boolean. Objekty Boolean lze vytvářet i explicitně voláním funkce konstruktoru Boolean. Funkce konstruktoru Boolean lze využít ke konverzi hodnot na primitiní hodnoty boolean:

var Logicka_hodnota = Boolean("Ahoj!")
/* proměnná Logicka_hodnota má hodnotu true (neprázdný řetězec) */

Pokud je objekt Boolean použit jako výraz v podmínce, je jeho hodnotou true i v případě že byla konstruktorem jeho počáteční hodnota nastavena na false (jakýkoli objekt je implicitně konvertován na hodnotu true). Správné vyhodnocení proběhne až po použití metody valueOf( ) objektu Boolean nebo v tomto případě i srovnáním s konkrétní hodnotou:

var Nepravda = new Boolean(false)
if (Nepravda) /* vyhodnoceno jako true */
if (Nepravda.valueOf()) /* vyhodnoceno jako false */
if (Nepravda == false)
/* vyhodnoceno jako true */

Metody objektů Boolean

Objekt Date

Objekt Date, vestavěný do JavaScriptu, reprezentuje časový okamžik. Hodnota času je v objektech Date uložena jako počet milisekund od počátku, stanoveného na 1. 1. 1970 greenwichského času (GMT – Greenwich Meridian Time), někdy značeného jako UTC vyjádření času. Konstruktoru objektů Date lze užít více způsoby:

var Nyni = new Date()

var Vanoce_86 = new Date(535762800000)
/* objekt Vanoce_86 reprezentuje Štědrý Den 1986 */

var Pocatek = new Date("Jan 1, 1970 00:00:00 GMT")

Speciální metody

Tyto metody nejsou součástí žádného konkrétního objektu Date, jsou proto volány pomocí identifikátoru Date:

var Uplynul = Date.parse("Dec, 24, 1999 10:11:15 GMT")

var Uplynul_stejne = Date.UTC(1999, Dec, 24, 10, 11, 15)

Metody objektů Date

Metody objektů Date pracují zpravidla s vyjádřením místního času, většina metod má však svou variantu (uvedenou na konci tohoto seznamu), která pracuje s časem univerzálním (UTC neboli GMT).

var Kolikateho = new Date().getDate()

var Kolikaty_rok = new Date().getFullYear()

var Kolikata_hodina = new Date().getHours()

var Kolikaty_mesic = new Date().getMonth()

var Rozdil = new Date().getTimezoneOffset()

var Vanoce_89 = new Date("Dec 24, 1989")
Vanoce_89.setHours(18)

var Vanoce_89 = new Date("Dec 24, 1989")
Vanoce_89.setSeconds(58)

var Okamzik = new Date("Sep 2, 1978 22:05:13")
var Okamzik2 = new Date()
Okamzik2.setTime(Okamzik)
/* oba objekty reprezentují stejný časový okamžik */

var Cas_GMT = new Date().toGMTString()

var Zdroj = new Date().toSource()

Některé metody objektu Date mají svou UTC variantu pracující s UTC (GMT) vyjádřením času: getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, setUTCDate, setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth, setUTCSeconds.

Objekt Function

Vestavěný objekt Function je objekt chovající se jako funkce. Objekty Function vznikají pomocí konstruktoru Function, jehož prvními několika parametry jsou parametry tvořené funkce a posledním parametrem je tělo tvořené funkce:

var Secti = new Function("a", "b", "return a+b")

je téměř ekvivalentní:

function Secti(a,b) {
return a+b
}

Výhodou funkce vzniklé jako objekt Function je, že taková funkce včetně parametrů a těla může vzniknout dynamicky při výpočtech JavaScriptu.

Jelikož je v JavaScriptu funkce vzniklá pomocí příkazu function obalována objektem obalujícím primitivní datový typ function, má, stejně jako objekty Function vytvořené stejnojmenným konstruktorem, některé vlastnosti, které jsou však přístupné pouze při vykonávání těla funkce:

function Vynasob() {
var Vysledek = Vynasob.arguments[0]

for(var i=1; i < Vynasob.arguments.length; i++)
Vysledek *= Vynasob.arguments[i]

return Vysledek
}
/* funkce mezi sebou vynásobí libovoný počet čísel zadaných jako parametry */

function Secti(a, b) {
return Secti.arguments.callee
}
var Zdrojovy_text = Secti(2, 3)
/* proměnná Zdrojovy_text obsahuje tělo funkce s parametry 2 a 3 */

function Odecti(a, b) {
return Odecti.length
}

var Ocekavano = Odecti(2, 3)
/* proměnná Ocekavano má hodnotu 2 */
 

Metody objektů Function

function vec(nazev, tvar) {
this.nazev = nazev
this.tvar = tvar
}

function vec_podrobne(nazev, tvar, barva) {
this.barva = barva
vec.apply(vec_podrobne, arguments)
}

vec_podrobne.prototype = new vec()

var ovoce = new vec_podrobne("jablko","koule","cervena")

Objekt Math

K vestavěnému objektu Math neexistuje příslušný konstruktor a proto nevznikají jiné objekty Math. Součástí tohoto jediného objektu Math jsou vlastnosti a metody sloužící k provádění aritmetických výpočtů.

Vlastnosti objektu Math

var polomer = Math.SQRT2
var obvod = 2 * Math.PI * polomer

Metody objektu Math

var Ctyri = Math.abs(-4)

var vetsi = Math.max(3, Math.Pow(2,2))
var rovno = Math.sin(Math.PI/2) == Math.log(Math.E)
/* proměnná vetsi má hodnotu 4 a proměnná rovno hodnotu true */

Objekt Number

Vestavěný objekt Number je objektem obalujícím primitivní datový typ number a dále obsahuje několik vlastností, jejichž hodnotami jsou některé zvláštní číselné konstanty. Objekty Number je možno vytvářet voláním stejnojmenného konsrtuktoru. Parametrem funkce konstruktoru Number je číselná hodnota, kterou tento objekt reprezentuje:

var Cislo = new Number(21)

Vlastnosti objektů Number

var Necislo = Number.NaN

var Nejmensi = Number.MIN_VALUE

Metody objektů Number

Objekt screen

JavaScript obsahuje jediný vestavěný objekt screen, který pomocí několika vlastností popisuje nastavení obrazovky.

Vlastnosti objektu screen

var Uzitecna_vyska = screen.availHeight

var Barevna_hloubka = screen.colorDepth

<SCRIPT>
document.write('Pracujete v rozlišení ' +
screen.width + 'x' + screen.height +
', v ' + screen.pixelDepth +
'–bit barevné hloubce.')
</SCRIPT>
<!-- program zobrazí například "Pracujete v rozlišení 1024x768 v 32–bit barevné hloubce." -->

Objekt String

Vestavěný objekt String obsahuje metody potřebné pro práci s řetězci, objekty String vytvořené pomocí stejnojmenného konstruktoru reprezentují řetězcové hodnoty:

var Retezec = new String("Řetězcová hodnota")

Aby však bylo možno i nad řetězcovou proměnnou volat metodu objektu String, je taková proměnná automaticky obalována objektem String obalujícím primitivní datový typ string:

document.write('Jak se máte?'.bold())
/* program zapíše do dokumentu "Jak se máte?" tučným řezem písma */

Vlastnosti objektů String

Metody objektů String

document.write("Kotva 1".anchor("první"))

je ekvivalentní:

<A NAME="první">Kotva 1</A>

document.write("Tučný text".bold())

je ekvivalentní:

<B>Tučný text</B>

var Kde = "Ahoj!".charAt(2) // proměnná Kde má hodnotu o

var Retezec = "Ahoj, ".concat("jak se máte?")

document.write("Jak se máte?".fontcolor("FF0000"))

je ekvivalentní:

<FONT COLOR="FF0000">Jak se máte?"</FONT>

document.write("Jak se máte?".fontsize(5))

je ekvivalentní:

<FONT SIZE="5">Jak se máte?</FONT>

var Kde = "Ahoj!".indexOf("h")
var Kde2 = "Ahoj!".indexOf("h", 2)

var Kde = "Ahoj!".lastIndexOf("h")

document.write("Seznam".link("http:/www.seznam.cz"))

je ekvivalentní:

<A HREF="http:/www.seznam.cz">Seznam</A>

var Podretezec = "Ahoj".slice(0,2)

var Podretezce = "Jak se máte?".split(" ")

var Podretezec = "Ahoj".substr(0,2)

var Podretezec = "Ahoj!".substring(0,2)

var VSECHNA_VELKA = "Jak se máte?".toUpperCase()

Zpět