Objektum és tömb literál
A literál a forrásprogramban olyan lexikális egység, amely közvetlenül értéket képvisel. Íme néhány példa:
| 12 | a 12-es szám |
| 1.2 | lebegőpontos szám |
| "helló világ" | karakterlánc |
| true | boolean érték |
| null | objektum hiánya |
A JavaScript 1.2-ben jelent meg először az objektum és tömb literál, ami később az ECMAScript v3-ban lett szabványosítva.
{x:1, y:2} // objektum literál
[1,2,3,4,5] // tömb literál
Az objektum literállal egy objektumot hozhatunk létre, nulla vagy több tulajdonsággal.
var obj = new Object (); // üres objektum létrehozása
var obj = {}; // a fenti objektummal ekvivalens objektum jön létre
A fenti példa két egyforma objektumot hoz létre. Az objektum literál sokszor van előnyben részesítve, mert rövidebb kódot eredményez. Objektum literált jobb olvashatósága miatt is használják, különösen azon esetekben, amikor egy függvénynek sok paramétert kell átadni. Nézzük a következő példát:
new Ajax.Request("hello.php", {
onSuccess : function(resp) {
alert("The response from the server is: " + resp.responseText);
},
onFailure : function(resp) {
alert("Oops, there's been an error.");
},
parameters : "name=Fred"
});
A Request metódus dokumentációjának elolvasása nélkül is tudjuk mire szolgálnak az átadott paraméterek, hiszen azok egy névvel vannak ellátva. A paramétereket tetszőleges sorrendben adhatjuk meg, mert azok egy azonosítóval vannak ellátva. Az ilyen célra használt névtelen objektumokat paraméter objektumnak (options object) is szokás nevezni.
Az objektum literál kapcsos zárójelben felsorolt tulajdonság-adat párok sorozata, amelyek vesszővel vannak elválasztva. Minden tulajdonság és értéke egy kettősponttal van elválasztva. A tulajdonságok neve lehet sztring, szám, vagy azonosító. Az értékek lehetnek sztring, szám, függvény, vagy más objektum.
var obj = {
"iterations":5,
8:10,
loop:function(){
for(var i=0;i<this.iterations;i++){
alert(i);
}
}
};
obj.loop(); // 0,1,2,3,4
obj[’8’]; // 10
Tömböt létrehozhatunk tömb literál segítségével (elemek sorozata szögletes zárójelek közé zárva). Az így megadott tömb objektum elemeit a tömb neve után szögletes zárójelbe írt sorszám segítségével címezzük meg, ahogy ezt a következő példa is mutatja.
// három elemű tömb
var a = [1, 'ketto', 3.14];
// az első elem
a[0]; // 1
Üres tömböt létrehozhatunk akár tömb literállal, akár a tömb osztály konstruktorával:
var empty = new Array();
var empty2 = [];
Objektum literálokat akár egymásba is ágyazhatunk. Például:
var pont = {x:1.2, y:-2.2};
var negyzet = {
balFelsoPont : {x : pont.x, y : pont.y},
jobbAlsoPont : {x : (pont.x + 10), y : (pont.y + 10) },
szin : [255,255,0]
};