Objekty

JavaScriptový objekt je v podstatě kolekcí vlastností (proměnných) a metod (funkcí), které se identifikují jmény nebo čísly. V JavaScriptu existují objekty vestavěné do jádra jazyka a objekty uživatelské. Vlastnosti objektu jsou určeny speciální funkcí zvanou konstruktor, dynamicky během vzniku objektu. Pro uživatelské objekty musí být konstruktor nejdříve deklarován. Konstruktor vytváří vlastnosti objektu tak, že přiřazuje hodnoty do dosud neexistujících vlastností objektu. Konstruovaný objekt je v těle konstruktoru označován operátorem this a jednotlivé vlastnosti jsou zpřístupněny nejčastěji takzvanou tečkovou notací:

function Clovek(jmeno, prijmeni) {
this.jmeno = jmeno
this.prijmeni = prijmeni
}

Funkce Clovek je konstruktorem stejnojmenného objektu, který má dvě vlastnosti: jmeno a prijmeni.

Pro vytvoření konkrétního objektu použijeme operátor new (vytváří prázdný objekt) následovaný voláním konstruktoru:

var Autor = new Clovek('Zdeněk','Marek')

Vlastnosti objektu jsou přístupné také indexací, kde index je řetězcový výraz, jehož hodnotou je jméno vlastnosti. Index je uveden za identifikátorem objektu v hranatých závorkách:

var krestni_jmeno_autora = Autor["jmeno"]

má stejný význam jako:

var krestni_jmeno_autora = Autor.jmeno

Vlastností objektu může být také odkaz na funkci, která většinou pracuje s vlastnostmi mateřského objektu a nazývá se metoda objektu. Vlastnosti mateřského objektu jsou v metodě přístupné pomocí operátoru this. Přiřazení vlastnosti objektu se provádí stejně jako přiřazování vlastností, nejlépe při konstrukci objektu:

<HTML>
<HEAD>
<SCRIPT>
function Cele_jmeno(){
return this.jmeno + ' ' + this.prijmeni
}
function Clovek (jmeno, prijmeni) {
this.jmeno = jmeno
this.prijmeni = prijmeni
this.Cele_jmeno = Cele_jmeno
}

var Autor = new Clovek ('Zdeněk','Marek')
alert (Autor.Cele_jmeno())
</SCRIPT>
</HEAD>
</HTML>
<!-- funkce Cele_jmeno je metodou objektu vytvořeného konstruktorem Clovek -->

V JavaScriptu existuje také objektový literál, předpis pro zápis objektů, seznam vlastností a metod objektů s počátečními hodnotami nebo odkazy na existující funkce, oddělený čárkami a uzavřený do složených závorek:

var druh = "ovoce"
var Jablko = {tvar: "koule", barva: "červená", popis: druh}

Všechny objekty JavaScriptu jsou odvozeny od objektu Object, který umožňuje aby každý nově vytvořený objekt obsahoval několik důležitých vlastností a metod. Objekt Object vzniká pomocí konstruktoru Object:

var Novy_objekt = new Object()

Vlastnosti constructor a prototype

Všechny objekty JavaScriptu implicitně obsahují vlastnosti constructor a prototype. Vlastnost constructor obsahuje odkaz na funkci konstruktoru, tedy funkci, která daný objekt vytvořila:

var Pole = new Array(1, 2)
var Konstruktor_Pole = Pole.constructor
/* proměnná Konstruktor_Pole obsahuje odkaz na funkci konstruktoru */

Vlastnost prototype obsahuje odkaz na takzvaný objektový prototyp, datovou strukturu definující vlastnosti a objekty společné všem objektům vytvořeným stejným konstruktorem.

Metody eval a toSource

Metoda eval slouží k vyhodnocení výrazu JavaScriptu (odpovídá funkci eval vestavěné do jádra JavaScriptu). Metoda toSource vrací objektový literál reprezentující objekt.

Metody toString a valueOf

Všechny objekty JavaScriptu mají definovány metody toString( ) a valueOf( ), které se automaticky volají, je–li potřeba konvertovat objekt na řetězec nebo číslo:

var Ted_hned = new Date()
var RetezecTh = Ted_hned.toString()
/* proměnná RetezecTh obsahuje řetězec popisující aktuální čas */

Metody watch a unwatch

Všechny objekty mají definovány metody watch a unwatch, které slouží k nastavení nebo zrušení ošetření události změny některé vlastnosti objektu:

var Objekt = new Object()
Objekt.vlastnost = 1

function ovladac(vlastnost, stara_hodnota, nova_hodnota){
document.write("Hodnota Objekt." + vlastnost +
" se změnila z " + stara_hodnota + " na " +
nova_hodnota + ".<BR>")
return nova_hodnota
}

Objekt.watch("vlastnost", ovladac)
Objekt.vlastnost = 2
delete Objekt.vlastnost
Objekt.vlastnost = 3
Objekt.unwatch("vlastnost")
Objekt.vlastnost = 4

Operátory složené závorky a tečka

Operátory složené závorky[ ] ” a tečka. ” slouží pro přístup k položkám polí (složené závorky), vlastnostem objektů (tečka i složené závorky) a metodám objektů (tečka):

document.cookie = "heslo=pejsek"

je ekvivalentní:

document[cookie] = "heslo=pejsek"

Objekty obalující primitivní datové typy

Objekty Boolean, Function, Number a String slouží jako takzvané objekty obalující primitivní datové typy a typ Function. V případě potřeby je kolem proměnné nebo výrazu primitivního datového typu boolean, function, number nebo string automaticky vytvořen obal – objekt příslušného typu, pomocí něhož můžeme s proměnnou nebo výrazem primitivního datového typu nebo typu function využívat vlastností nebo metod příslušného obalového objektu:

var Delka_retezce = "Ahoj!".length
/* proměnná Delka_retezce má hodnotu 5 */

Objektové prototypy

Objektový prototyp je objekt přidružený k funkci konstruktoru a sloužící jako předloha pro objekty, které voláním příslušného konstruktoru vznikají. Při použití takového konstruktoru pro vytvoření nového objektu, sdílí nově vytvořený objekt všechny vlastnosti (včetně jejich hodnot) příslušného objektového prototypu:

function Bytost (jmeno, prijmeni) {
this.jmeno = jmeno
this.prijmeni = prijmeni
}

function Clovek(pohlavi) {
this.pohlavi = pohlavi
}

Clovek.prototype = new Bytost('Zdeněk','Marek')



var Autor = new Clovek('Muž')
/* objekt Autor má vlastnosti jmeno, prijmeni a pohlavi */

Zpět