Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Callback i zmienne...
Qss
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 7
Dołączył: 22.02.2009

Ostrzeżenie: (0%)
-----


Witam,
Ktoś mi wytłumaczy czemu tak się dzieje i jak to ominąć że gdy mamy jakaś zmienna klasową, globalna i jak przypiszemy do niej jakąś wartość w funkcji callback jakiejś metody to przypisana wartość tej zmiennej nie jest dostępna poza funkcjami callback

edit// zauważyłem że pierw wykonuje się fun2, fun i fun3.. dlaczego ?

Przykład:
  1. function myClass(){
  2. this.test = null;
  3. this.fun = function(){
  4. $(document).ready(function(){
  5. this.test = 1;
  6. console.log(this.test);
  7. });
  8. }
  9.  
  10. this.fun2 = function(){
  11. console.log(this.test);
  12. }
  13.  
  14. this.fun3 = function(){
  15. $(document).ready(function(){
  16. console.log(this.test);
  17. });
  18. }
  19. }
  20.  
  21. var obj = new myClass(); // tworze nowy obiekt klasy
  22. obj.fun(); //odpalam funkcje z funkcja z callbackiem gdzie przypisuje do pola test 1 i oczekuje ze ono tam pozostanie (konsola zwraca 1)
  23. obj.fun2(); //ku mojemu zdziwieniu konsola zwraca null
  24. obj.fun3(); //przypadek jak w fun i konsola zwraca 1


Nie pytajcie się dlaczego użyłem tu tej metody
$(document).ready(function()..
w oryginalnym przykładzie jest tam pobierane coś za pomocą chrome API (własnie z callback) i chciałbym to przypisać do zmiennej klasowej po czym obrabiać innymi funkcjami

Ten post edytował Qss 26.03.2013, 22:41:38
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


To proste: w JavaScript nie ma klas a "this" oznacza nie oznacza kontekstu klasy, tylko kontekst wywołania danej funkcji, a tutaj masz dwie funkcje naraz:

Cytat
this.fun = function(){
$(document).ready(function(){
this.test = 1;
console.log(this.test);
});

}


jak masz $(document).ready to najpewniej "this" to będzie document czyli dodajesz zmienną test do zmiennej document, bo to jest bezpośrednim kontekstem.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 19:06