Dzisiaj, moje jedyne palące pytanie dotyczące jQuery dotyczy czasu użycia jQuery.extend()
i jQuery.fn
(który jest używany do wtyczek). Basil Goldman wydaje się mieć wyjaśnienie w "Defining your own functions in jQuery", ale z jakiegoś powodu nadal nie jestem zadowolony, że mam najlepsze informacje. Kiedy zaczniemy pracować z jQuery.fn
, musimy rozważyć, czy powinniśmy po prostu zbudować pełnowymiarową wtyczkę. Oznacza to trzy problemy: rozszerzenie, dodanie nowej funkcji i zbudowanie wtyczki. Powinno być wyjaśnienie, że spójne są wszystkie trzy. Czy to jest warte wyjaśnienia i czy je mamy?jQuery: rozszerzenie, dodanie nowej funkcji i budowa wtyczki?
Odpowiedz
Myślę, że możesz myśleć zbyt mocno. :)
W źródle jQuery - przedłużenie() określa się raz i stosuje się w obu nazw:
jQuery.extend = jQuery.fn.extend = function() { .. };
technicznie wszystkie funkcja ta jest połączyć razem właściwości obiektów.
Więc w najbardziej podstawowego przypadku użycia, wystarczy połączyć dwa obiekty w jeden obiekt (podobnie jak parametry w opcjach wtyczki):
this.options = $.extend({}, defaultOptions, userOptions); // Just mergin' objects
funkcji rozszerzania na zwykły Jane nazw jQuery $ || jedynie dodaje tę funkcję jako funkcję statyczną w przestrzeni nazw jQuery. Funkcje występujące w przestrzeni nazw jQuery są zwykle funkcjami, które nie wymagają elementu do działania. Są to funkcje takie jak isArray() i isFunction() wraz z wieloma innymi.
var noWhiteSpace = $.trim(string); // No element needed
jQuery.fn jest mniej lub bardziej zarezerwowany dla funkcji wykonujących akcje oparte na elementach przekazywanych do obiektu jQuery. Są to normalne wtyczki i większość rzeczy, do których przywykłeś w jQuery.
$('div').css('border', '1px solid green'); // Do work on a set of elements
Co ciekawiej, jeśli spojrzysz na coś podobnego do funkcji $ .data() w źródle jQuery. Jest zdefiniowany w obu obszarach nazw. Najpierw jest zdefiniowany w $ namespace, a element i jako pierwszy parametr. Zostaje później rozszerzony na $ .fn i po prostu wywołuje pierwszą funkcję z pierwszym zestawem parametrów jako "this".
Mam nadzieję, że tego właśnie szukasz!
- 1. Zastępowanie funkcji wtyczki jQuery
- 2. Rozszerzenie wtyczki ES6 na prototyp jQuery
- 3. jQuery $ (this) wewnątrz funkcji wtyczki
- 4. Wywołanie funkcji wewnątrz wtyczki jQuery z zewnątrz
- 5. Dodawanie funkcji do wtyczki jqGrid jQuery
- 6. jQuery konwencja wtyczki nazewnictwa (dla funkcji)
- 7. Debugowanie wtyczki jQuery i zclip
- 8. dodanie nowej gramatyki TextMate do visual studio 2015 Update 1
- 9. Użyj funkcji attr() w nowej wtyczce?
- 10. Dostosowywanie wtyczki myszy jQuery
- 11. jonowa budowa phonegap i config.xml
- 12. numpy: rozszerzenie tablic wzdłuż nowej osi?
- 13. JavaScript - budowa obiektu JSON
- 14. Pisanie nowej wtyczki refaktoryzacji dla Eclipse?
- 15. SonarQube - pomoc w tworzeniu nowej wtyczki językowej
- 16. Anonimowa budowa klasy
- 17. Jquery lazyload funkcja wtyczki i wywołania zwrotnego
- 18. Wtyczki cache-ehcache wtyczki i wartości TTL
- 19. Rozszerzenie jquery $ (this)
- 20. VB.NET - Rozszerzenie funkcji w klasie?
- 21. Budowa docelowa i wersja Min SDK Android
- 22. Zrozumienie i budowa algorytmu sieci społecznościowej
- 23. Rozszerzanie istniejącej funkcji jQuery
- 24. GCC/Linux: dodanie biblioteki statycznej do .so?
- 25. Czy budowa obiektu funkcji statycznej zakresu jest bezpieczna dla wątków?
- 26. błąd Budowa Ionic Android: Budowa udało z wyjątkiem
- 27. Połączenie dwóch zmiennych typu string w bash dodanie nowej linii
- 28. Python jest dodanie dodatkowej nowej linii do wyjścia
- 29. Funkcje publiczne z wtyczki jQuery
- 30. Modyfikowanie wtyczki jQuery tabeli tabeli
Doceniam twoją odpowiedź! Mam starszą wersję kodu od YUI 2.x do (być może) przeniesienia do jQuery, więc muszę myśleć "twardo"; [ Teraz potrzeba zbudowania wtyczki może nadejść, gdy masz kilka "prywatnych" pomocy funkcje dla "publicznej" funkcji rozszerzającej --- prawda? – rasx
To byłby powód do używania wtyczki, tak! –