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 (1 - 2)
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 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 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


wink.gif

Ten post edytował Sephirus 27.01.2012, 15:46:35


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #3





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

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


Świetnie, teraz już widze że każda funkcja ma metode call().
Właśnie o to mi chodziło.

Dzięki!
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 - 15:47