Como parece darse cuenta, es una buena idea no volcar todas sus funciones de utilidad en el espacio de nombres global. Cuanto menos puedas impactar en el espacio de nombres global, mejor. Si ya tiene jQuery, entonces sus decisiones acerca de qué hacer con ellos son:
- Como nuevos métodos en el objeto jQuery como:
jQuery.myUtil1()
, jQuery.myUtil2()
.
- Como nuevos métodos bajo un objeto en el objeto jQuery como:
jQuery.jfUtils.myUtil1()
, jQuery.jfUtils.myUtil2()
.
- Como nuevos métodos en un nuevo objeto global (nada que ver con jQuery) como:
jfUtils.myUtil1()
, jfUtils.myUtil2()
.
Opción 2) me parece mejor que la opción 1) porque disminuye la posibilidad de colisionar con otras funciones de jQuery aunque agrega una búsqueda adicional para cada llamada de función.
Opción 3) me parece perfectamente aceptable, ya que solo agrega un nuevo elemento al espacio de nombres global, por lo que siempre que el nombre sea razonablemente único, debería estar bien.
Por lo tanto, creo que podría ir con la opción 2) o la opción 3). Opción 2) podría ser un poco más seguro porque conoce el alcance general de lo que está en ese espacio de nombres, pero cualquiera puede funcionar.
Gracias jfriend00, así que realmente es una cuestión de preferencia por lo que suena, además de agregarlo directamente al objeto jquery, tienes que ser más cuidadoso. Es por eso que primero verifiqué el archivo jquery.js para asegurarme de que no hubiera métodos del mismo nombre que estaría agregando. Simplemente parece más limpio agregarlos directamente a jquery namesapce. Pero también veo la protección adicional de agregar otro objeto directamente al espacio de nombres jquery para agregar sus métodos. – Chapsterj
+1 Definitivamente vaya con la opción 2. Realmente no es tan malo escribirlo como $ .util.myMethod() y la protección le ahorrará dolores de cabeza más adelante. Agrupar funciones comunes en espacios de nombres es una buena práctica en cualquier idioma. La excepción es que a menos que decida vincularse a la cadena de manipulación DOM de jQuery. –