Autor Zpráva
zis
Profil *
Zdravim,

chci se zeptat, zda lze z anonymni funkce ziskat nejaky objekt, krome vraceni return. Ten objekt se tam zaroven vytvari.

Priklad: Do pole test chci vlozit vsechny objekty obj2.

var test = [];

obj1.method1(function()
{
    var obj2 = new Object2();
    test[i++] = obj2;
});

alert(test.length);

Pisu to z hlavy, takze to mozna neni syntakticky uplne spravne, ale jde mi o podstatu meho problemu. Konkretne se jedna o to, ze obj1 a jeho metoda je nejaky objekt z API, ktery nemohu zmenit, ale v jeho metode provadim nejake upravy. A prave ty bych potreboval ziskat, objekty instance Object2 z tohoto zapouzdreneho objektu.
_es
Profil
zis:
No a čo ti na tom nefunguje? Skúšal si to? Čo je v i?

obj1 a jeho metoda je nejaky objekt z API, ktery nemohu zmenit, ale v jeho metode provadim nejake upravy.
To si nejako odporuje. Napíš zrozumiteľne o čo sa pokúšaš, lebo píšeš nejako zmätene.
zis
Profil *
ok, konkretnejc

var test = [];
for(i = 0; i < addresses.length; i++)
{
    geocoder.geocode({address: addresses[i]}, function(results, status)
    {
        if (status == google.maps.GeocoderStatus.OK)
        {
            var marker = new google.maps.Marker({
                                                    map: map,
                                                    position: results[0].geometry.location
                                                });
            ...
            
            test.push(marker);
            ...
        }
    });
}
alert(test.length);

alert hlasi 0.
Rfilip
Profil
Zdá se že bude problém s podmínkou na 6 řádku, řádky 7 až 16 se vykonají?
Co je v proměnné status?
Předpokládám že v poli addresses jsou adresy, jsou správné a odpovídají požadavkům?
zis
Profil *
Presne tak.

Podminka se statusem se provede x-krat (radky 7-16), vleze to tam. PRomenna addresses obsahuje jednotlive adresy. Pokud dam ale napr. pred radek c. 14 alert(addresses[i]), tak to vypise undefined. Nicmene pri volani funkce geocode, to tam vleze spravne.
Promenna status je jen nejaka enumerace.
_es
Profil
zis:
Nicmene pri volani funkce geocode, to tam vleze spravne.
Pretože hodnota z prvého argumentu predaného do metódy geocoder.geocode je braná v inom čase ako je volaná funkcia - druhý argument tej metódy. A vtedy má premenná addresses asi inú hodnotu (iný obsah). Ako a kde je premenná addresses definovaná a kde všade ju meníš? Vkladáš tu len nejaké vytrhnuté kusy kódu, z ktorých sa problém vyriešiť nedá.

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: