Autor Zpráva
Anonymní
Profil *
Do funkce

function test(f){..}

si predavam dalsi funkci

function dalsi() {...}

jak ve funkci test zjistim nazev funkce kterou do ni predavam? Prez f.toString() to delat nechci, neni nejaky lepsi zpusob??
Yuhů
Profil
není mi jasné, co to znamená předávám.

Možná je řešením příkaz eval()
WagoOn
Profil *
Pardon, ze sem se nepodepsal, nevsim sem si toho policka:)

Predavam (konkretne v tomto pripade) znamena

test(dalsi);

jde mi toto, jak tedy v tele funce test zjistim nazev funkce, kterou sem takto predal odkazem, tj aby mi to vratilo string "dalsi". Mohu udelat f.toString(), ale z nejakeho duvodu to v Opere vraci jine vysledky
Fred
Profil
Můžeš být konkrétnější? Co jsou to jiné výsledky? Opera si přidává do url absolutní cestu, je to ono?
Oswald
Profil
WagoOn

Každému objektu (funkce je taky objekt) můžeš přiřadit vlastní funcki toString.


function rekniAhoj() {
return 'ahoj';
}
rekniAhoj.toString = function() {
return 'rekniAhoj';
}
alert(rekniAhoj()); // ahoj
alert(rekniAhoj); // rekniAhoj
alert(rekniAhoj.toString()) // rekniAhoj


Nebo prostě můžeš té funkci přiřadit její název jako vlastnost:


rekniAhoj.nazevFunkce = 'rekniAhoj';


Pokud ale něco takového potřebuješ, tak je nejspíš v tvém skriptu něco špatně. Určitě by to šlo udělat nějak jinak - jednodušeji.
WagoOn
Profil *
Dobra, menim tedy otazku

Jak zjistit jmeno objektu (tedy instance nejake tridy)?
Oswald
Profil
Pokud si ho někam neuložíš, tak nijak. Napadá mě ještě jedna obskurnost:



function getVarName(variable, parentObject) {
if (!parentObject) {
parentObject = window;
}
for (var i in parentObject) {
if (parentObject[i] === variable) {
return i;
}
}
}


var someObject = {};
alert(getVarName(someObject));

someObject.someProperty = 'someValue';
alert(getVarName(someObject.someProperty, someObject));


Tohle bude fungovat pouze tehdy, pokud budou všechny vlastnosti parentObject ukazovat na unikátní objekty nebo hodnoty. Pokud bude variable undefined, tak to taky nebude fungovat.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0