Я начал обматывать свои функции внутри объектов, например:
var Search = {
carSearch: function(color) {
},
peopleSearch: function(name) {
},
...
}
Это помогает с удобочитаемостью, но у меня все еще есть проблемы с повторной активацией. Чтобы быть более конкретным, сложность заключается в двух областях:
-
Получение параметров. Много раз у меня будет экран поиска с несколькими полями ввода и кнопкой, которая вызывает функцию поиска javascript. Я должен либо положить кучу кода в onclick кнопки для извлечения, а затем ввести в действие значения из полей ввода в вызове функции, или мне придется жестко кодировать имена/идентификаторы полей ввода HTML, чтобы впоследствии их можно было восстановить с Javascript. Решение, для которого я решил, заключается в передаче имен/идентификаторов полей в функцию, которые затем используются для извлечения значений из полей ввода. Это просто, но на самом деле кажется неправильным.
-
Возвращаемые значения. Эффект большинства вызовов Javascript имеет тенденцию быть тем, в котором некоторые визуальные эффекты на экране меняются напрямую или в результате другого действия, выполняемого в вызове. Повторное использование - это тост, когда я помещаю эти эффекты, изменяющие экран, в конце функции. Например, после завершения поиска мне нужно отобразить результаты на экране.
Как другие справляются с этими проблемами? Полагаю, что мой мыслящий колпачок наводит меня на мысль, что мне нужно иметь слой Javascript, специфичный для страницы, между каждым использованием в моем приложении и создаваемыми мной универсальными методами, которые будут использоваться в масштабах всего приложения. Используя предыдущий пример, у меня была бы кнопка поиска, чья onclick вызывает функцию myPageSpecificSearchFunction, в которой идентификаторы/имена полей поиска жестко закодированы, что упорядочивает параметры и вызывает функцию общего поиска. Общая функция возвращает только данные/объекты/переменные и не будет непосредственно читать или вносить какие-либо изменения в DOM. Функция поиска по конкретным страницам затем получит эти данные и соответствующим образом изменит DOM.
Есть ли я на правильном пути или есть лучший шаблон для обработки повторного использования объектов/методов Javascript?