Jquery - 保持DRY - 动态命名函数?

时间:2010-10-10 02:50:34

标签: javascript jquery

所以我觉得保留我的代码的最好方法是调用一个带有动态名称的函数。例如,我可能需要调用“productTemplate”,“userTemplate”,“orderTemplate”等...

javascript / jquery可以吗?此外,它是否会影响性能?

2 个答案:

答案 0 :(得分:4)

在基本的JavaScript中,不需要jQuery,无论对象是什么,甚至window都可以使用bracket notation,例如:

var methodName = "productTemplate";
obj[methodName](); //exe obj.productTemplate();

对于全局函数也是如此,只需将obj替换为window即可。您可以使用jQuery插件或核心执行此操作,例如.toggle(bool)如何工作,实际上在内部使用.show().hide()

$("selector")[bool ? "show" : "hide"]()

答案 1 :(得分:3)

如何在对象下存储这些功能?您可以使用eval动态调用这些函数名称或使用window[type + 'Template']访问它们,但对象实现看起来更简单,更清晰。

var templates = {};
templates.order = function (order) { /* ... */ }
templates.product = function (product) { /* ... */ }
templates.user = function (user) { /* ... */ }

my_element.innerHTML = templates.user(my_user);

(另外,微软创建的jQuery Templates插件可能对你特别想要的东西有所帮助。它非常好,它将被构建到jQuery 1.5中,不知道。)