Legalább is az Ajaxian szerint van :) Mondjuk én is elcsodálkoztam, miért ezt a címet adták neki, de biztos csak Dijkstrát akarják majmolni, csak nem sikerült.
Ez a cikk így hülyeség. JavaScriptben egyszerüen nincs olyan, hogy "asszociatív tömb". Van egy szintaktikus jelölés: valami["akarmi"] ami hasonlít más programnyelvek aszociatív tömb kezeléséhez, de valójában ez JavaScriptben az objektumok tulajdonságainak elérésének egy módja. Ugyanaz mintha: valami.akarmi-t írnánk.
Ez így valószínűleg nem fog menni, az a változónak előtte egy bármilyen típusú objektumnak kell lennie. Másrészt pedig pont arról szól a cikk, hogy ne az Array-t használjuk erre a célra, hanem az alap Object-et. A lényege a dolognak, hogy bármely példányosított objektumon, típustól függetlenül működik a fenti jelölés és használat, csak hülyeség nem az Object-et használni erre a célra.
Helyes példa:
var a = {};
a["bármi jöhet ide"] = 1;
a.akarmi = 2;
Vagy másképp:
var a = new Object();
a["bármi jöhet ide"] = 1;
a.akarmi = 2;
var a = {
akármi: 2,
bármi: function () {
var i;
for (i in this) alert(i + " " + typeof this[i])
},
izé: [1,["2a","2b"],3]
};
a.bármi();
alert(a.izé[1][1]);
Háttér:
A "mitirki" BME-n Pongor tanárúr egyik bevett vizsga kérdése volt, természetesen mindig valami kis trükkel megcsavarva ami feltételezte, hogy pontosan tudja a hallgató, hogy mi is történik a kód értelmezésekor.
A kód inkább csak válasz volt a másik bejegyzésre, példát mutatva arra, hogy nem csak attribútumokat, de metódusokat is lehet definiálni ezzel az egyszerű szintaktikával.
Az izé tömb megadása pedig a többdimenziós tömb kérdésre akart válasz lenni.
A JavaScriptben minden objektum. Objektumnak lehet tulajdonsága egy másik objektum. Egy tömb típusú objektumnak lehet eleme akár egy tömb, akár valami teljesen más objektum. Olyan, hogy vektor, és olyan, hogy többdimenziós tömb, olyan nincs, viszont a működésének következtében teljesen olyan, mintha lenne többdimenziós tömb. Tehát nyelvi szinten deklaráltan nincs, de amúgy van. ;)
Miért, mi az, ami nem objektum? Nyilván a for kulcsszó nem az, de minden létrejövő dolog a változóktól a függvényeken át a böngésző (például) beépített elemein át valóban objektum. A JavaScript kiemelkedően objektum-orientált nyelv.
A JavaScript kiemelkedően objektum-orientált nyelv.
Inkább objektum alapú, vagy ilyesmi.
Lehet, hogy a js-ben minden objektum, de nem követeli meg, hogy objektumorientáltan programozz. Ugye nem attól lesz valamelyik kód oo, hogy a változók objektumok, és a függvények a window objektumhoz tartoznak? Így a fenti mondatot erre módosítanám: "Barokkos túlzás a js-et kiemelkedően objektum-orientált nyelvnek hívni."
A cím ROSSZ
Array()
-t kell használni hozzá. Van olyan, aki azt használta??Ajaxian
Nincs aszociatív tömb JavaScriptben
nincs olyan, hogy "asszociatív tömb"
Pontosan
Array
-t használjuk erre a célra, hanem az alapObject
-et. A lényege a dolognak, hogy bármely példányosított objektumon, típustól függetlenül működik a fenti jelölés és használat, csak hülyeség nem az Object-et használni erre a célra.Helyes példa:
Két megjegyzés
3.) Igen, lemaradt egy sor:
Mit ír ki?
Mit ír ki?
akármi integer
bármi function
izé Array
2b
"mitirki"
A "mitirki" BME-n Pongor tanárúr egyik bevett vizsga kérdése volt, természetesen mindig valami kis trükkel megcsavarva ami feltételezte, hogy pontosan tudja a hallgató, hogy mi is történik a kód értelmezésekor.
A kód inkább csak válasz volt a másik bejegyzésre, példát mutatva arra, hogy nem csak attribútumokat, de metódusokat is lehet definiálni ezzel az egyszerű szintaktikával.
Az izé tömb megadása pedig a többdimenziós tömb kérdésre akart válasz lenni.
Akit érdekel mit ír ki, futassa le és meglátja.
NENENE
Az 1) egy másik lehetséges deklarációt mutat be.
A JavaScriptben minden objektum. Objektumnak lehet tulajdonsága egy másik objektum. Egy tömb típusú objektumnak lehet eleme akár egy tömb, akár valami teljesen más objektum. Olyan, hogy vektor, és olyan, hogy többdimenziós tömb, olyan nincs, viszont a működésének következtében teljesen olyan, mintha lenne többdimenziós tömb. Tehát nyelvi szinten deklaráltan nincs, de amúgy van. ;)
nem reklám volt
2.) Az azért barokkos túlzás azt állítani, hogy a javascriptben minden objektum. Ennyire nem objektumorientált nyelv. :)
folyt
Ez működik. (Itt egy függvénynek adunk attribútumot.)
Minden objektum
for
kulcsszó nem az, de minden létrejövő dolog a változóktól a függvényeken át a böngésző (például) beépített elemein át valóban objektum. A JavaScript kiemelkedően objektum-orientált nyelv.objektumorientált?
Inkább objektum alapú, vagy ilyesmi.
Lehet, hogy a js-ben minden objektum, de nem követeli meg, hogy objektumorientáltan programozz. Ugye nem attól lesz valamelyik kód oo, hogy a változók objektumok, és a függvények a window objektumhoz tartoznak? Így a fenti mondatot erre módosítanám: "Barokkos túlzás a js-et kiemelkedően objektum-orientált nyelvnek hívni."
De erősen objektum alapú.