V prvom diely o objektoch v JavaScripte sme si ukázali, ako si vytvoríme vlastný objekt. Dnes si povieme, ktoré metódy a príkazy môžeme používať pri objektoch a ako si zjednodušiť prácu s objektmi.

V minulom diely sme sa oboznámili s vlastnosťou prototype, pomocou ktorej pridávame novú vlastnosť, alebo metódu. Existuje ešte jedna vlastnosť, a to constructor, ktorá určuje názov konštrukčnej funkcie, ktorá vytvára objekt. Ukážeme si to na príklade:

function konsFun ( ) {
  this.nic = 0;
  }
o = new konsFun();
if (o.constructor == konsFun)
  alert(„konsFun“);

Teda, ak objekt „o“ bol vytvorený pomocou konštrukčnej funkcie konsFun(), zobrazí sa o tom správa.

Vlastnosť prototype a constructor môžeme používať pri každom objekte. Existujú aj metódy, ktoré môžeme používať pri každom objekte. Je to metóda toString() a metóda valueOf(). Stručne povedané metóda toString prevádza objekt na reťazec a metóda valueOf na číslo.

Pri metóde toString môžeme použiť voliteľný argument, číslo od 2 do 16, ktoré bude reprezentovať základ číselnej sústavy, do ktorej sa má číslo v reťazci previesť.

var s=“metóda toString\n“;
for (var i = 0 ; i<10 ; i++)
  s += „Dec: “ + i.toString(10) + “ Bin: “ + i.toString(2) + „\n“;
alert(s);

Pri objektoch argument v metóde toString nepoužívame. JavaScript vyvoláva metódu toString zakaždým automaticky, ak je to potrebné, napr. v document.write(objekt). Môže samozrejme nastať prípad, kde musíme metódu toString zavolať my:

pole = new Array(„www“,“interval“,“cz“);
/* pole.toUpperCase() nie je metódou objektu Array, preto musíme pole previesť na reťazec pomocou metódy toString, a až potom použiť metódu toUpperCase() – vráti reťazec s veľkými písmenami */
alert( pole.toString().toUpperCase() );

Metóda toString a valueOf sa v JavaScripte moc nepoužívajú. Vo väčšine prípadoch sa skôr vytvárajú vlastné funkcie, pre používanie týchto metód. Napríklad:

function funToString(){
  return this.retazec;
  }
function funValueOf(){
  return this.cislo;
  }
function o( r , c ){
  this.retazec = r;
  this.cislo = c;
  this.toString = funToString;
  this.valueOf = funValueOf;
  }
pokus = new o(„interval“,1);
alert(pokus.valueOf() + „\n“ + pokus.toString());

V dokumentácii NN a IE o JavaScripte by ste našli ešte nejaké metódy, ktoré je možné používať pri objektoch, ale navzájom sú odlišné, preto uvádzam iba tie, ktoré sú použiteľné v oboch prehliadačoch (aj Opera 5).

Predpokladám, že cyklus for už poznáte, v JavaScripte existuje ešte jeden cyklus, a to for…in. Slúži nám na prechod všetkými vlastnosťami objektu, alebo prvkami poľa. Syntax je nasledovná:
for(prem in objekt)
  príkaz
„prem“ je premenná, alebo prvok poľa, alebo vlastnosť objektu
„objekt“ je názov objektu, alebo pole
„príkaz“ je príkaz, alebo to môže byť blok, ktorý tvorí telo cyklu

function pocitacUpgrade(){
  this.ram +=16;
  this.hdd += 1000;
  }
function Pocitac(r,h){
  this.ram = r;
  this.hdd = h;
  this.upgrade = pocitacUpgrade;
  }
p = new Pocitac( 16 , 5000 );
var i;
var s = „Počítač: \n“;
for(i in p)
  s += i + „: “ + p[i] + „\n“;
alert(s);

Na záver si ukážeme ako si zjednodušiť prácu s objektmi pomocou príkazu with. Syntax je nasledovná:
with(objekt)
  príkaz

<form name=“formular“>
a: <input type=“text“ name=“a“ value=“jeden“>
b: <input type=“text“ name=“b“ value=“dva“>
</form>
<script language=“JavaScript“>
document.write(„a: “ + document.forms.formular.a.value + „<br>“);
document.write(„b: “ + document.forms.formular.b.value + „<br>“);
with(document.forms.formular){
  document.write(„a: “ + a.value + „<br>“);
  document.write(„b: “ + b.value + „<br>“);
  }
</srcipt>

Ešte uvádzam príklad, ktorý sa často vyskytuje vo väčšine dokumentáciách:

var a,x,y;
var r=10;
with(Math){
  // PI je vlastnosť objektu Math
  // cos, sin sú metódy objektu Math
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI/2);
}

Týmto by som ukončil druhý diel o objektoch. Nabudúce mám pre vás pripravený článok o poliach v JavaScripte, pretože polia sú, tiež objektom. Ak vám stále niečo na objektoch nie je jasné, experimentujte a skúšajte, lebo jediný spôsob, ako sa naučiť programovať je – programovať.

Žádný příspěvek v diskuzi

Odpovědět