| 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: 12 let
|
|||
0