Autor Zpráva
Darker
Profil
Mějme:
var neco={fujtofuj:"",
          ble:{nefunkce:"",
               funkce:function(){var nic=""}
          }
 }


Dá se nějak z neco.ble.funkce dostat jméno nadřazených elementů, popř. ty elementy samotné?
ShiraNai7
Profil
Jednoduší je to řešit takto a máš snadný přístup ke všemu:


var neco = (function(){

  // definujem vsechny promenne
  var prom = {
    fujtofuj: 'ahoj',
    ble: {
      nefunkce: '',
      funkce: function(){return prom.fujtofuj;}
    }
  };
  
  // a vratime
  return prom;

})();



A potom lze:

alert(neco.ble.funkce()); // vypise ahoj
Darker
Profil
Obávám se, žes mě nepochopil. Já umím spouštět funkce v rámci objektů i pod jinými funkcemi.
O co mi jde, je najít nadřazený objekt. Konkrétně v tvém příkladu:
Dokážeš přinutit funkci neco.ble.funkce() aby vypsala "neco", jako string, a tento řetězec získala ze svojí nadřazené funkce?
Chamurappi
Profil
Reaguji na Darkera:
Vymáčknout z proměnné jméno jako řetězec žádným standardním způsobem nejde. Neměl bys to k ničemu potřebovat.
Darker
Profil
Ok, to je fakt. Ale něco bych přece potřeboval. Opět budu pracovat s příkladem od skiry. Dejme tomu, že budu výtvářet libovolný počet objektů ble (každý dostane k názvu třeba "_"+rand() ) a budu chtít, aby ta funkce neco.ble_1234.funkce vypsala neco.ble_1234.fujtofuj,
a využila toho, že jejím nadřazeným objektem je ble_1234. Neboli se tam dostala přes hierarchii, podobně jako string.split je funkce s jedním argumentem, hodnotu string zjistí z toho, že její členská funkce.
Darker
Profil
Děkuji za rady, problém jsem nakonec vyžešil následovně:
neco.ble.parent=neco.
Zjednodušeně.
Odpověď jsem nalezl zde.

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: