我目前的编程风格是使用John Resig的Class.extend函数的OO javascript:http://ejohn.org/blog/simple-javascript-inheritance/
这很好但我发现自己编写了许多只能在init上使用的setter和getter。此外,当将这些对象的实例存储在数组中供以后使用时,它似乎会导致IE中的内存泄漏。
我开始倾向于使用更小,更清晰,更易读的代码而不是看似过度的OO方法。我的想法是现在使用jquery并使用.data方法存储数据属性,将所有内容都放在dom之外。例如,您只需使用类推文向dom添加div,而不是创建新的Tweet对象的实例,只需在.data缓存中添加诸如author,timestamp,reply to,sent from等属性。那个dom元素。
在创建诸如twitter之类的项目中的项目实例时,您如何看待这种结构较少的方法? OO和原型继承是最好的方法还是更严格的dom操作?
答案 0 :(得分:1)
我的大脑告诉我,非结构化的Javascript不依赖于DOM操作,并且使用jQuery调用和调出它是理想的。
但是,我刚刚编写了一个HTML5 Web应用程序,它使用内置的SQLlite脱机运行,并使用主要的.data并在div中存储信息并将它们从那里取出来。它简单,干净,容易,但由于某种原因感觉不对。
但它运作良好。
答案 1 :(得分:1)
我正在做类似的事情。我采用了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方法需要依赖所有相关方法的插件,然后将数据存储在元素数据中。我有许多方法与严格的元素交互无关,所以我将方法和数据保存在类中。