【发布时间】:2011-06-12 05:38:24
【问题描述】:
我注意到我一直在编写的 JavaScript 中有一个常见的模式,并且想知道是否已经有一个模式可以将类似的东西定义为最佳实践?从本质上讲,它是如何获取 DOM 元素并将其包装在内部/将其与 JavaScript 对象相关联。以这个示例为例,您需要在 Web 应用程序中使用过滤器。您的页面如下所示:
<html>
<head></head>
<body>
<div id="filter"></div>
</body>
</html>
然后你可以像这样包装元素:
var myFilter = new Filter({
elem: document.getElementById('filter'),
prop: 'stacks-test',
someCallback: function() {
// specify a callback
}
});
还有 JavaScript(其中 spec 是传递给构造函数的对象):
var Filter = function(spec) {
this.elem = spec.elem;
this.prop = spec.prop;
this.callback = spec.someCallback;
this.bindEvents();
};
Filter.prototype.bindEvents = function() {
var self = this;
$(this.elem).click(function(e) {
self.updateFeed();
};
};
Filter.prototype.updateFeed = function() {
this.prop; // 'stacks-test'
this.callback();
// ...
// code to interact with other JavaScript objects
// who in turn, update the document
};
这种方法叫什么,最佳实践和注意事项是什么?
【问题讨论】:
-
我不想听起来像个没有头脑的 jQuery 粉丝,但 确实 看起来你最好还是使用 jQuery 或类似的框架。虽然它的主要目的是帮助您进行 DOM 选择和操作,但整个库都是基于您正在谈论的这种 DOM 包装模式构建的,因此它的插件功能和其他辅助功能自然使您可以轻松地做到这一点:好吧。
-
我仍然需要使用构造函数,因为一个文档中会有多个过滤器。你能告诉我一个使用 jQuery 和 Filter 对象的例子吗?
-
我会尽快发布答案。另外,下次记得在您的评论中包含@Box9,以便我收到通知。我只是碰巧偶然发现了这个问题。
标签: javascript dom constructor javascript-objects