面向对象的Javascript与纯jQuery和.data存储

我目前的编程风格是使用John Resig:
http://ejohn.org/blog/simple-javascript-inheritance/的Class.extend函数的OO javascript

这很好,但我发现自己编写了许多只能在init上使用的setter和getter.此外,当将这些对象的实例存储在数组中供以后使用时,它似乎导致IE中的内存泄漏.

我开始倾向于使用更小,更清晰,更易读的代码而不是看似过度的OO方法.我的想法是现在使用jquery并使用.data方法存储数据属性,将所有内容都放在dom之外.例如,您只需使用类推文向dom添加div,而不是创建新的Tweet对象的实例,只需在.data缓存中添加诸如author,timestamp,reply to,sent from等属性.那个dom元素.

在创建诸如twitter之类的项目中的项目实例时,您如何看待这种结构较少的方法? OO和原型继承是最好的方法还是严格的dom操作更好?

最佳答案 我正在做类似的事情.我采用了OO javascript方法.但我没有使用数组,而是使用键值对象.键是唯一的dom元素id,值是对象本身.它看起来像这样.

例如:

var collection = {};
var $domEl = jQuery;              // jquery dom element
var myClass= new MyClass($domEl); // class instance

// add to collection
collection[$domEl.attr('id')] = myClass;

// remove
delete collection[$domEl.attr('id')];

真的,这取决于你的对象的复杂性.严格的.data方法需要依赖所有相关方法的插件,然后将数据存储在元素数据中.我有许多方法与严格的元素交互无关,所以我将方法和数据保存在类中.

点赞