Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] this !== window, jak stworzyć funkcje bez globalnego zasięgu
wNogachSpisz
post
Post #1





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Witam
Niezależnie jak i gdzie zdeklaruje funkcje, po jej wywolaniu "this" zawse bedzie referencją window.
Jest to niewydajne, kazda funkcja przed odpaleniem musi miec zbudowane referencje globalnego zasiegu.
Ponoć można zrobic tak, że pod "this" będzie zamiast window np. garstka argumentow albo najlepiej nic.
Jak to zrobic?

Ten gość od jQuery mowi o tym od 19 minuty, kończy na początku 21.
http://youtu.be/0LKDImgRfrg?t=19m

Ten post edytował wNogachSpisz 27.01.2012, 14:34:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Nie wiem czy dobrze Cię zrozumiałem ale chodzi Ci pewnie ogólnie o kontekst (IMG:style_emoticons/default/smile.gif)

Są do tego dwie metody które ma każda funkcja:

[JAVASCRIPT] pobierz, plaintext
  1. // załóżmy taką bezsensowną funkcje:
  2. function testowa()
  3. {
  4. alert(this.tagName);
  5. }
  6. // funkcja nie ma sensu bo nic w sobie nie ma ...
  7.  
  8. // ale...
  9.  
  10. // Mamy dwie metody:
  11. // .call i .apply
  12.  
  13. var jakisDiv = document.getElementById('jakis_div');
  14.  
  15. testowa.call(jakisDiv);
  16.  
  17. // lub
  18.  
  19. testowa.apply(jakisDiv);
  20.  
  21. // Da zamierzony efetk
  22.  
[JAVASCRIPT] pobierz, plaintext


Czyli wywołujemy funkcje testowa z odpowiednim kontestem - to co podamy jako 1szy argument apply i call będzie this'em w tej funkcji (IMG:style_emoticons/default/wink.gif)

Co do argumentów:

[JAVASCRIPT] pobierz, plaintext
  1. funkcja.call(jakis_obiekt, arg1, arg2, arg3);
  2.  
  3. funkcja.apply(jakis_obiekt, new Array(arg1, arg2, arg3));
  4.  
  5. // dadzą efekt:
  6.  
  7. funkcja(arg1,arg2,arg3);
  8.  
  9. // w której to jako this będzie obiekt "jakis_obiekt"
[JAVASCRIPT] pobierz, plaintext


(IMG:style_emoticons/default/wink.gif)

Ten post edytował Sephirus 27.01.2012, 15:46:35
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 22:32