Wydaje się, że dobrze jest nie zrzucać wszystkich funkcji użytkowych do globalnej przestrzeni nazw. Im mniej możesz wpływać na globalną przestrzeń nazw, tym lepiej. Jeśli masz już jQuery, a następnie do wyboru dla gdzie je umieścić to:
- jako nowe metody na obiekcie jQuery jako:
jQuery.myUtil1()
, jQuery.myUtil2()
.
- Jako nowe metody pod jednym obiektem w obiekcie jQuery jako:
jQuery.jfUtils.myUtil1()
, jQuery.jfUtils.myUtil2()
.
- Jako nowe metody na jednym nowym obiekcie globalnym (nie ma nic wspólnego z jQuery) jako:
jfUtils.myUtil1()
, jfUtils.myUtil2()
.
Opcja 2) wydaje mi się lepsza niż opcja 1), ponieważ zmniejszasz ryzyko kolizji z innymi funkcjami jQuery, ale dodajesz dodatkowe wyszukiwanie dla każdego wywołania funkcji.
Opcja 3) wydaje mi się zupełnie do zaakceptowania, ponieważ dodaje tylko jeden nowy element do globalnej przestrzeni nazw, tak długo jak nazwa jest w miarę unikalna, powinieneś być w porządku.
Sądzę, że możesz wybrać jedną z opcji 2) lub opcję 3). Opcja 2) może być trochę bezpieczniejsza, ponieważ znasz ogólny zakres tego, co jest w tym obszarze nazw, ale każdy z nich może działać.
Dzięki jfriend00 tak naprawdę jest to kwestia preferencji przez dźwięki, a także bezpośrednie dodanie go do obiektu jquery, który naprawdę musi być bardziej ostrożny. Właśnie dlatego najpierw sprawdziłem plik jquery.js, aby upewnić się, że nie ma metod o tej samej nazwie, które chciałbym dodać. Po prostu wydaje się czystsze, aby dodać je bezpośrednio do nazwy pliku jquery. Ale widzę także dodatkową ochronę dodawania innego obiektu bezpośrednio do przestrzeni nazw jquery, aby dodać swoje metody. – Chapsterj
+1 Zdecydowanie idź z opcją 2. Naprawdę nie jest tak źle napisać jako $ .util.myMethod(), a ochrona uratuje ci bóle głowy w dół. Grupowanie wspólnych funkcji w przestrzeni nazw jest dobrą praktyką w dowolnym języku. Wyjątkiem jest, chyba że zdecydujesz się powiązać z łańcuchem manipulacji DOM jQuery. –