Autor | Zpráva | ||
---|---|---|---|
mtichysp Profil |
#1 · Zasláno: 19. 11. 2014, 10:56:31
Dobrý den, prosím o pomoc
Mám dva objekty na sobě nezávislé. Obj1 - statická třída Obj2 - objekt Princip: Po přidání položky v Obj1 se spustí metoda z Obj2.jePridano(). Jenže tady je problém. V metodě jePridano() je odkaz na proměnou promenna1 přes this. Při nastavení spouštěcí metody do Obj1.func se funkce přepíše a this je tedy nyní Obj1 a ne Obj2. Jak z toho ven? :-) var Obj1=function(){}; Obj1.func=null; Obj1.pridejPolozku=function(vstup){ // zde je kód pro přidání - AJAX asynchronní .... // po dokončení zavoláme funkci Obj1.func(id, nazev); }; // ---------------------------- var Obj2=function(){ this.promenna1=null; this.promenna2=null; this.jePridano=function(){ this.promenna1="pridano"; alert("ok"); }; }; // --------------------- // v těle stránky window.onload=function(){ var instanceObj2=new Obj2(); obj1.func=instanceObj2.jePridano(); obj1.pridejPolozku("test"); } Díky. |
||
_es Profil |
#2 · Zasláno: 19. 11. 2014, 12:23:44
mtichysp:
Kód vyzerá veľmi nezmyselný, pokús sa radšej najprv naštudovať základy. Prečo je Obj1 funkcia, keď tak nie je používaná? Okrem toho je zvykom, že funkcie s veľkým prvým písmenom sú volané pomocou new .
Na 7. riadku voláš funkciu v Obj1.func , no v 27. riadku do Obj1.func dávaš undefined (návratovú hodnotu z instanceObj2.jePridano ).
Mal by si najprv poriadne navrhnúť, na čo má ktorý objekt a jeho metódy slúžiť a aj ich vhodne nazvať, aby sa v tom dalo vyznať. Ak sa chceš odkazovať na hodnotu v this nie v čase volania funkcie, ale aká bola skoršie, tak si tú hodnotu ulož skôr do nejakej premennej.
|
||
Časová prodleva: 9 let
|
0