| 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: 11 let
|
|||
0