【发布时间】:2011-02-06 05:24:24
【问题描述】:
我已经开始将我的函数包装在对象中,例如:
var Search = {
carSearch: function(color) {
},
peopleSearch: function(name) {
},
...
}
这对可读性有很大帮助,但我仍然遇到可重用性的问题。更具体地说,困难在于两个方面:
接收参数。很多时候,我会有一个带有多个输入字段的搜索屏幕和一个调用 javascript 搜索功能的按钮。我必须在按钮的 onclick 中放置一堆代码以检索然后将输入字段中的值军事化到函数调用中,或者我必须对 HTML 输入字段名称/ID 进行硬编码,以便随后可以检索它们使用 Javascript。我为此确定的解决方案是将字段名称/ID 传递给函数,然后它使用该函数从输入字段中检索值。这很简单,但看起来确实不合适。
返回值。大多数 Javascript 调用的效果往往是屏幕上的某些视觉效果直接发生变化,或者是调用中执行的另一个操作的结果。当我将这些屏幕更改效果放在函数的末尾时,可重用性就很不错了。例如,搜索完成后,我需要在屏幕上显示结果。
其他人如何处理这些问题?思考上限让我相信我需要在我的应用程序中的每次使用和我创建的将在应用程序范围内使用的通用方法之间有一个特定于页面的 Javascript 层。使用前面的示例,我将有一个搜索按钮,其 onclick 调用 myPageSpecificSearchFunction,其中搜索字段 ID/名称是硬编码的,它编组参数并调用通用搜索函数。通用函数将仅返回数据/对象/变量,不会直接读取 DOM 或对 DOM 进行任何更改。然后,特定于页面的搜索功能将接收此数据并适当地更改 DOM。
我是在正确的道路上还是有更好的模式来处理 Javascript 对象/方法的重用?
【问题讨论】:
-
建议将其设为社区 wiki,它非常主观。
标签: javascript code-reuse