Portál AbcLinuxu, 14. května 2025 16:55
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.