Autor | Zpráva | ||
---|---|---|---|
eXMarty Profil |
#1 · Zasláno: 23. 2. 2015, 16:00:03
Ahoj,
snžím se v JavaScriptu (mimo jiné) prokousat definicí vlastního typu (=vlastního objektu - jak jsem pochopil z různých návodů knih či podobně) Definuji si tedy vlastní objekt (=typ) var typBodu = function( ) { this.jmeno = ''; this.popis = ''; this.styl = ''; this.souradniceX = 0; this.souradniceY = 0; this.datumZmeny = ''; } var jedenBod = new typBodu(); Chtěl bych si ale vytvořit celé pole (Array) objektu. Tedy v mé (zatím omezené JavaScript-programátorsky omezené myšlence) bych to viděl nějak takto: var body = new Array(new typBodu()) Ale podle toho když jsem to tak zkusil, vytvořím tímto sice pole, kde je prvním prvkem můj typ (=objekt). Poradíte prosím někdo zkušený jak na to? Vpodstatě bych potřeboval něco ve smyslu var body = new ArrayOf(typBodu) - vím, že je nesmysl, ale pro názornost - věřím že znalí pochopíte. Nebo jak by se typ proměnné měl vytvořit správně?
Díky moc (snažím se v tom zorientovat dlouho ale dost sem se ztratil v pojmech pole, konstruktor, třída, objekt, metoda, ... :( ) |
||
Dan Charousek Profil |
Pokud jsem pochopil správně, tak chceš získat pole attributů daného objektu. V tom prípadě stačí objekt projet cyklem for s klíčovým slůvkem IN. Viz. ukázka.
To co s atributy uděláš je jedno, můžeš si je klidně uložit do nějakého svého pole. |
||
juriad Profil |
#3 · Zasláno: 23. 2. 2015, 16:40:02
eXMarty:
Pole jakýchkoli prvků definuješ takto. Nemusíš používat konstruktor, můžeš to zapsat také pomocí těch hranatých závorek. var body = []; Toto vloží bod do pole: body.push(jedenBod); Mimochodem, je konvence konstruktory pojmenovávat velkým písmenem. |
||
eXMarty Profil |
Dan Charousek, juriad:
Pánové, děkuji Vám moc. Popravdě k tomuto, že každému prvku v poli budu muset definovat typ zvlášť (při procházení cyklemfor), k tomu jsem došel, ale přišlo mi to dost zvláštní a považoval jsem to za nesprávné použití. Opravdu ještě jednou oběma díky za reakce, jdu tedy začít a uvidíme, kde se zaseknu dále. PS: o konvenci psaní "funkce" konstruktoru s počátečním velkým písmenem jsem se už dočetl, a budu se snažit používat - i za to děkuji, alespoň při dalších dotazech nebudu třeba vypadat jako totální jelito, ale třeba jen jako běžný jelito. Díky ŘEŠENÍ: var TypBod = function() { this.jmeno = ''; this.popis = ''; this.styl = ''; this.souradniceX = 0; this.souradniceY = 0; this.datumZmeny = ''; }; var vsechnyBody = []; for(i= 0;i<10; i++){ var jedenBod = new TypBod(); jedenBod.jmeno = 'jméno bodu ' + i; jedenBod.popis = 'popisek bodu' + i; jedenBod.styl = 'styl_' + i; jedenBod.souradniceX = 15 + i/10; jedenBod.souradniceY = 50 + i/10; jedenBod.datumZmeny = '2015-01-0' + i; vsechnyBody.push(jedenBod); } |
||
Časová prodleva: 9 let
|
0