He decidido que necesito mejorar mis habilidades de programación de JavaScript, así como mis habilidades de OO. Actualmente estoy leyendo algunos libros, pero a veces es difícil comprender la teoría sin ver primero algunos ejemplos prácticos. Entonces, tengo una pregunta teórica sobre "mejores prácticas" para la siguiente situación ...Pregunta de mejores prácticas de JavaScript orientada a objetos: cómo debo configurar mis objetos para el siguiente
Me gustaría crear una secuencia de comandos OO que muestre una lista de registros de búsqueda recuperados del servidor. También quiero poder editar cada registro de etiqueta de búsqueda en su lugar.
Actualmente estoy haciendo esto procesalmente con un poco de ayuda de la biblioteca jQuery:
acepto una lista de JSON-codificada de registros searchtag desde el servidor. Se ve así:
[
{ "searchTagName" : "tagOne", "searchTagID" : "1" },
{ "searchTagName" : "tagTwo", "searchTagID" : "2" },
{ "searchTagName" : "tagThree", "searchTagID" : "3" },
etc...
]
yo tiro el JSON directamente en jTemplates para crear el HTML correspondiente, así:
$("#searchTagList")
.setTemplateElement("template_searchTagList")
.processTemplate(searchTagData);
Por último quiero que sea posible modificar cada searchtag con un Editar- en el lugar método, por lo que hay que adjuntar un método de pre-construidos edición en el lugar para cada elemento hTML:
$(".searchTag").editInPlace();
Esto funciona muy bien procesalmente. Y tal vez lo más inteligente sería dejar lo suficientemente bien solo. :) Pero, por el bien de la discusión, ¿cuál es la mejor manera de escribir algo como esto desde la perspectiva OO?
¿Debo tener un solo objeto "searchTagList" que tenga métodos para cada uno de los pasos descritos anteriormente?
var searchTagList =
{
searchTagData: JSONdata,
renderList: function() { /*send to jTemplates */ }
bindEdit: function() { /* attach edit-in-place */ }
}
¿O es incorrecto? (Parece que todo lo que hago es ajustar mis funciones de procedimiento en un objeto.) ¿Debo de alguna manera analizar los datos JSON en instancias de cada etiqueta de búsqueda y luego adjuntar métodos individuales a cada etiqueta de búsqueda? (Esto parece una gran sobrecarga, sin ganancia.)
Disculpas de antemano si parece que estoy recogiendo pelos. Pero realmente quiero entender esto en mi cabeza.
Gracias,
Travis
Gracias por la respuesta. Debería aclarar Cuando quise decir procedimental, quise decir que tengo 3 funciones distintas en el espacio global. Uno para manejar la recuperación de JSON del servidor. Uno para convertir el JSON a html. Y una función final para adjuntar un método de edición en el lugar a los nodos html. Es verdad que cada una de esas funciones usa técnicas OO jQuery internamente. Pero estoy más preocupado por la mejor forma de organizar las tres funciones de nivel superior, que en la actualidad se ven muy procesales, es decir, si todas estuvieran envueltas en un objeto. Voy a echar un vistazo a YUI3, gracias. – Travis