我注意到JavaScript中的一个常见模式,我一直在编写,并且想知道是否已经有一个模式定义类似于最佳实践的模式?从本质上讲,它是如何获得一个DOM元素并将其包装/关联到一个JavaScript对象。以此示例为例,您需要在Web应用程序中使用过滤器。您的网页看起来是这样的:包装JavaScript对象中的DOM元素
<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包装模式的基础上,所以它的插件功能和其他辅助函数自然而然地使你很容易做到这一点好。 – 2011-01-20 06:21:57
我仍然需要使用构造函数,因为在一个文档中会有多个过滤器。你能告诉我一个使用jQuery和Filter对象的例子吗? – 2011-01-20 06:39:12
我会尽快发布答案。另外,下次请记住在您的评论中包含@ Box9,以便我收到通知。我只是偶然发现了这个问题。 – 2011-01-20 07:19:01