Portál AbcLinuxu, 16. ledna 2026 11:02
function objekt(vl1, vl2) {
this.vlastnost1 = vl1;
this.vlastnost2 = vl2;
}
var osoba1 = new objekt ("něco", "něco jiného");
var osoba2 = new objekt ("hodnota", "jiná hodnota");
atd.
var rada = ["osoba1", "osoba2", atd.];
function vyberObjekt() {
var x = Math.round(Math.random()*10);
var nahodnaOsoba = rada[x];
if (x<(rada.length)-1) document.getElementById("zobraz").innerHTML = ??? (tady nevím, nahodnaOsoba.vlastnost1 vrací undefined)
}
Řešení dotazu:
function objekt(vl1, vl2){
var a = vl1;
var b = vl2;
var x = function(v){
console.log(v)
};
return {
jmeno: a,
prijemni: b,
kontext: this,
metoda: x
};
};
var osoba1 = objekt("Jan", "Novak");
var osoba2 = objekt("Petr", "Cerny");
var rada = [osoba1, osoba2];
var osoba = rada[1];
console.log('---> ' + new Date());
console.log(rada);
console.log(osoba);
console.log(osoba.prijemni);
console.log(osoba.kontext);
console.log(osoba.metoda('Hu!'));
console.log('<---');
this je v tom příkladu správně a objekt se tam vytváří tak, jak se v JavaScriptu vytvářet má (operátorem new). Těch "více způsobů" se používá, když se někdo snaží v JavaScriptu prototypovou dědičnost nahradit emulací tříd.
var rada = ["osoba1", "osoba2", atd.];do pole
rada nevkládáte vytvořené objekty, ale texty. Jsou tam navíc ty uvozovky. Má to být:
var rada = [osoba1, osoba2, atd.];Pak už vám bude fungovat to
nahodnaOsoba.vlastnost1.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.