Windows - Függvények és objektumok

Javascript suli 4. rész

forráskód letöltése
A sorozat mostani részében a JScript nyelv függvényeivel és objektumaival ismerkedünk. Egyaránt kitérünk a beépített és a saját kezűleg létrehozható fajtákra. A cikkhez kapcsolódó mellékletben saját definícióra példát is találhat.
Függvények a JScript nyelvben
A függvények olyan elkülönített kódszeletek, amelyek névvel, bemeneti paraméterekkel rendelkeznek, külön meghívhatók, és értéket adnak vissza. Kétféle lehet a függvény: beépített, vagy saját magunk által készített.
A beépített függvényekre egy példa az eval függvény, amely a paraméterül megadott szöveges információt, mint kifejezést kiértékeli, és a kapott értéket adja vissza.
szam = eval("6*5-3");
Habár egy string értéket adtunk bemeneti paraméterként, mégis ki tudja értékelni az eval függvény ezt, sőt ez a feladata. Ez kitűnő lehet olyan esetekben, amikor különféle feltételektől függően készítünk el kifejezéseket, karakterláncokból összeillesztve. Ezt az eval függvénnyel tudjuk végül kiértékeltetni.
Saját függvényt is készíthetünk a "function" deklaráló kulcsszóval. Példaként egy egyszerű függvényt készítünk, amely a bemeneti karaktersorozatban megvizsgálja, hogy található-e benne "@" jel. Ez hasznos lehet e-mail címek szintaktikai ellenőrzésénél. A példa megtalálható a mellékletben. Több olyan utasítás is található benne, amellyel majd a későbbiekben foglalkozunk. A függvénydeklaráció a következő:
function fuggveny_nev([parameter[, parameter ...]])
{
utasitassorozat
return kifejezes;
}
A "return" utasítás után megadott érték lesz a függvény visszatérési értéke.
Objektumok
Az objektumok olyan programnyelvi elemek, amelyek tulajdonságokkal és metódusokkal rendelkeznek. A metódusok olyan függvények, amelyek egy objektumhoz kapcsolódnak. A tulajdonságok pedig értékek, vagy értékek csoportja tömb esetében. Akárcsak a függvények esetében, objektum is lehet belső, nyelvi objektum, és általunk definiált felhasználói objektum. Ezen kívül lehet még külső, ActiveX objektum is, valamint a futtatást végző héj objektuma, mint pl. a Windows az Internet Explorer esetében.
A JScript-ben a tömbök és az objektumok nagyon hasonló módon kezelhetők. Tulajdonképpen a tömb egy speciális objektum, ami rendelkezik egy különleges ("length") tulajdonsággal. Ha a tömb új elemet kap, akkor ez a tulajdonság változik dinamikusan, de ha a tulajdonságon változtatunk, akkor a tömb is ez által változik, azaz változik az elemszáma.
Minden objektum dinamikus módon kaphat új tulajdonságot, és el is veszítheti azt futásidőben. A tulajdonságokat többféleképpen azonosíthatjuk:
var objVaros = new Object();
objVaros.nev = "Varsó";
Ebben az esetben egy szöveges azonosító mutat a tulajdonságra.
objVaros["keruletek szama] = 28;
Használhatunk szóköz karaktert is az azonosítóban, de ekkor kapcsos-zárójellel és macskakörömmel is kell jeleznünk a speciális formátumot.
objVaros[5] = "Lengyelország";
Lehet az azonosító numerikus is, ilyenkor nem szükséges a macskaköröm, viszont a kapcsos-zárójel igen.
A tömb objektumok elemeire nullával kezdődő numerikus azonosítókkal hivatkozunk. Ezek a numerikus azonosítók állnak kapcsolatban a length tulajdonsággal. Ezt azért fontos kiemelni, mert egy tömbhöz – mint minden objektumhoz – saját tulajdonságokat is rendelhetünk, és ezek a tulajdonságok nem lesznek összefüggésben a tömb méretét mutató length tulajdonsággal.
var tomb = new Array(2);
tomb[0] = 1;
tomb[1] = "második elem";
tomb.sajat = "saját tulajdonság";
tomb["harom tagu nev"] = "ez is egy lehetőség";
Ez a példa is mutatja, hogy hozzárendelhetünk a tömbünkhöz saját tulajdonságokat is, ahogy minden más objektumhoz is. Ha ekkor lekérdezzük a tömb méretét, az továbbra is három elemet fog jelenteni. Ne feledjük, hogy mivel az első index-e a tömbnek a nulla, ezért a tömb méretét szolgáltató tulajdonság a legnagyobb index értékénél mindig eggyel nagyobb lesz.
Objektumok deklarálása a konstruktor segítségével történik. Ez a tömbök esetében az "Array()" kulcsszó.
Belső objektumok
A JScript nyelv 11 belső saját objektummal rendelkezik. Ezek közül most a fontosabbakkal foglalkozunk:
  • Array, vagyis tömb objektum. Mivel erről az objektumról a fentiekben már írtunk, most csupán azzal egészítjük ki, hogy a deklarálás többféleképpen is történhet. A konstruktort megadhatjuk úgy is, hogy felsoroljuk rögtön a tömb elemeit, nemcsak úgy, hogy az elemszámot adjuk meg.
Var tomb1 = new Array("1", "2");
Var tomb2 = new Array();
Var tomb3 = new Array(3);
Láthatjuk, hogy még az elemszám sem szükséges, az is elhagyható, és ekkor a tömb kezdetben üres lesz.
  • String objektum. A JScript-ben a szöveges és szám értékekkel úgy bánunk, mintha azok objektumok lennének. A string objektum nagyon sok beépített metódussal rendelkezik, amely segíti annak kezelését. Itt is megtalálható a length tulajdonság, ami a szöveg hosszát hivatott szolgáltatni.
szoveg = "pelda a szovegrészlet kiemelésére";
szovegresz = szoveg.substring(2,3);
Példaként nézzük meg a gyakran használt substring metódust. Ez a metódus kivág a szövegből az első paraméter által meghatározott helytől kezdődően, a második paraméter által megadott mennyiségű karaktert. A példa során az eredmény a következő részlet: "eld".
  • Math objektum. Ez egy matematikai konstansokat és függvényeket tartalmazó objektum. A tulajdonságokra egy példa a pí értéke, vagy például a hatványozó függvény.
piertek = Math.PI;
eredmeny = Math.pow(4,3);
Ez utóbbi pow függvény a 4-et a harmadik hatványra emeli.
  • Date objektum. Ezt az objektumot különféle dátum és idő értékek megjelenítésére használjuk, valamint a rendszeridő lekérdezésére, különféle dátumértékek összehasonlítására. Konstruktora: Date(). Képes a hét napjait, az éveket, hónapokat, napokat, órát, percet, másodpercet kezelni és szolgáltatni. Az értéke az 1970. január 1. 00: 00: 00 óta eltelt ezredmásodperceken alapszik.
var nap = new Date();
A nap változó értéke az aktuális nap dátuma lesz.
  • Number objektum. A matematikai objektum beépített konstans értékein kívül ez az az objektum, amely néhány speciális számértékkel, mint tulajdonsággal rendelkezik.
Tulajdonság Leírás
MAX_VALUE A legnagyobb lehetséges érték, körülbelül 1,79E+308. Ez lehet pozitív és negatív
MIN_VALUE A legkisebb lehetséges érték, körülbelül 2,22E-308. Ez is lehet pozitív és negatív egyaránt.
NaN Speciális nem szám érték: "not a number"
POSITIVE_INFINITY Pozitív végtelen. Akkor veszi fel egy szám ezt az értéket, ha a legnagyobb lehetséges értéknél nagyobbat akarunk létrehozni.
NEGATIVE_INFINITY Negatív végtelen. Akkor veszi fel ezt az értéket, ha a legkisebb értéknél kisebb értéket akarunk adni egy számnak.
A nem szám egy olyan speciális érték, amit például akkor vesz fel egy numerikus változó, ha nullával való osztást kezdeményezünk. Ez az érték nem egyezik meg egyik számmal sem, de önmagával megfeleltetve sem ad egyenlőséget. Hogy ellenőrizni tudjunk egy ilyen értéket, használjuk az isNaN() függvényt.
a = 5 / 0;
bool = isNaN(a);
bool változó értéke igaz lesz, a műveletsor végeztével.
Saját objektumok deklarálása
Ahhoz, hogy saját objektumot hozzunk létre, először készítsük el a hozzá tartozó konstruktor függvényt. Erre is találunk a mellékletben példát. Ez tulajdonképpen egy olyan függvény, amely definiálja az objektum tulajdonságait és metódusait. A függvény, a majdani objektum tulajdonságaira a this kulcsszó segítségével utalhat. A metódust külön függvényként definiáljuk, és a konstruktorban hivatkozunk rá. A tulajdonságokat a konstruktorban fel kell sorolni, mint a függvény paramétereit. A metódusokat nem, ezeket saját deklaráló függvényeik definiálják.

Javascript suli cikksorozat