Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Prośba o wytłumaczenie różnicy
Forum PHP.pl > Forum > Przedszkole
Morghulis
Witam,
na swojej stronie chcę zastosować slider. Znalazłem skrypt jquery.slides.js. Wszystko działa ok, ale przeglądając kod skryptu znalazłem konstrukcję której nie rozumiem:
[JAVASCRIPT] pobierz, plaintext
  1. Plugin = (function() {
  2. function Plugin(element, options) {
  3. this.element = element;
  4. this.options = $.extend(true, {}, defaults, options);
  5. this._defaults = defaults;
  6. this._name = pluginName;
  7. this.init();
  8. }
  9. return Plugin;
  10. })();
[JAVASCRIPT] pobierz, plaintext

Jestem początkujący w JavaScripcie i zastanawiam się jaka jest różnica między powyższym kodem a:
[JAVASCRIPT] pobierz, plaintext
  1. Plugin = function(element, options) {
  2. this.element = element;
  3. this.options = $.extend(true, {}, defaults, options);
  4. this._defaults = defaults;
  5. this._name = pluginName;
  6. this.init();
  7. }
[JAVASCRIPT] pobierz, plaintext

Może mnie ktoś oświecić?
Damonsson
Na moje oko, to nie ma najmniejszego sensu. 2. wersja jest poprawna.

Nawet konsola powinna zakrzyczeć o anonimowej funkcji.
PrinceOfPersia
w tym konkretnym przypadku wychodzi na to samo, z tym że pierwsza wesja tworzy domknięcie(closure), a domknięcia pozwalają min. stworzenie dodatkowego zasięgu, w ktorym będą trzymane zmienne. Także zamyka to w pewną całość blok kodu.. można latwo podmienić to co jest po return, i sprawić, że do zewnętrznej zmiennej Plugin będzie przypisane co innego, niz jest to widoczne w środku samowywolujacej sie funkcji (innymi słowy taka izolacja, połaczona z elastycznoscią)

Być moze ktoś napisał to z myślą o przyszłej rozbudowie kodu. Domknięć bardzo często się używa w JS, i niektórzy już asekuracyjnie to stosują, nawet jeśli w efekcie wychodzi na to samo .
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.