我注意到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