Autor Zpráva
Kryvosa
Profil *
Ahoj, mám další začátečnický dotaz :)
Mám objekt, gameGrid[nějakéčíslo][nějakéčíslo]
neco=function(a,b){var c={}; c.a=a; c.b=b; return c}
gameGrid[2][10]=new Neco(a,gameGrid[2][10])

Nemůžu místo posílání argumentu b přímo v té funkci přejít k tomu objektu se kterým pracuju?
Něco jako o složku výš (" ../ ") v javascriptu?
Kryvosa
Profil *
Omlouvám se, sem blbej.
Za A) Upravuje se daný objekt přes this
a za B) this je odkaz na celý objekt.
Takže svůj dotaz upravuji:

neco=function(a,b)
{
this.a=a
//tady potřebuju jít o level výš, něco jako ../this, abych mohl do gameGrid[2].b přiřadit b
}
gameGrid[2][10]=new Neco("ahoj","nehoj")
alert(gameGrid[2].b) //mělo by pak vypsat nehoj
Ps: pak to samozřejmě nebudu používat takto :) to bych si mohl jako třetí proměnnou v funkci dát 2
juriad
Profil
Kryvosa:
Asi si to neuvědomuješ, ale tvůj požadavek je nesmyslný.
gameGrid je pole, to obsahuj další pole a to obsahuje objekty typu Neco.
Z jakého důvodu by měl býta být instance Neco svázaná s nějakým polem? Navíc při volání konstruktoru není vůbec jasné, že se bude výsledný objekt někam přiřazovat.
Kryvosa
Profil *
Nejsou to pole, jsou to objekty, k objektu se dá přistupovat i přes hranaté závorky (díky tomu můžete také přistoupit k oběktu přes její jméno v proměnné)
V překladu, mám udělat
gameGrid[2]=new Neco("ahoj","nehoj",10)
neco=function(a,b,c)
{
this[c].a=a
this.b=b
}

Nebo je to myšleno jinak?
Zajímalo mně, jestli funkce pracující s objektem v this může pracovat i s objektem nadřazeným tomu objektu:

function Pracuj()
{
this="ahoj"
//a tady k objektu "objekt" přidat podobjekt "jinyPodobjekt"
}
var objekt={};
objekt.Podobjekt=new Pracuj();

alert(typeof objekt.jinyPodobjekt) //Mělo by vyhodit Object
Vím že je to vlastně zbytečný, ale hodně mi to usnadní práci. ( Nebudu muset přepisovat dvě stě řádků kódu :-) )
juriad
Profil
Kryvosa:
OK, s tím polem to byl přehmat. Neviděl jsem ještě nikdy, že by někdo pojmenovával atributy objektu čísly na místo použití pole.

Není to možné. Nemáš žádnou šanci zjistit, odkud na tebe vede reference (ani kolik jich vede). Navíc v době, kdy se vykonává konstruktor ještě ten „proto-objekt“ nebyl nikam přiřazen (alespoň ne v uživatelském prostoru), takže se nemáš na co odvolat.

var objekt = {};
var podobjekt = new Pracuj();
// přiřadíme později
objekt.podobjekt = podobjekt;
// nebo drsněji:
podobjekt.self = podobjekt;

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: