摘要: document.images;由于集合元素是处于实时状态的实时存在,它与底层dom连接着。在遍历它的每一个属性或length时都会带来查找,从而性能开销很高。这里是有关集合元素在循环处理时的优化原则一、用变量缓存集合元素二、在循环在缓存集合length属性三、在循环中用变量缓存当前数组样例代码var coll = document.getElementsByTagName('div'); len = coll.length, name = '', el = null;for(var count = 0; count < len; count++){ el 阅读全文
posted @ 2011-09-15 22:11 顺武 阅读(350) 评论(0) 推荐(0) 编辑
摘要: HTML集合是包含了DOM节点引用的类数组对象。document.getElementsByTagName();document.images document.links document.forms document.forms[0].elementsHTML集合有length,有索引,但不是真正的数组 没有push 或slice之类的方法 HTML集合处于一种“实时状态” 实时存在,这意味着底层文档对象更新时,它也会自动更新,HTML集合与文档一直保持连接,每次你需要更新信息时,都命运 重复执行查询的过程,这下是低效之源昂贵的集合缓存数组长度 \for(var i=0,len =... 阅读全文
posted @ 2011-09-15 21:57 顺武 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 用DOM生成html的别一种方法,稍快用法:element.cloneNode(false);在用dom 编写html时先将要克隆的节点创建出点var oTr = document.createElement('tr');var tr = oTr.cloneNode(false); 阅读全文
posted @ 2011-09-15 21:17 顺武 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 用脚本访问DOM代价很昂贵,它是富Web应用中常见的性能瓶颈。比如,修改DOM的样式会导致页面的重排或重绘,Js访问dom就是慢,因为在浏览器实现中,js是一个引擎,dom是一个与语言无关的东西,由别一个引擎在做IE js 由jscript.dll实现 JScript dom由 mshtml.dll实现, 也称TridentFiefox js 由TraceSpider实现 dom由geckochrome js 由v8实现 dom由webCore实现所以js对dom的操作,其实是基于接口的编程,当然就会慢,访问另一个东西的接口,必然有性能开销。书上的比喻将两都说成两个小岛,每次操作都... 阅读全文
posted @ 2011-09-15 08:09 顺武 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 所有类似的问题都与对象成员有关,,因此应该尽量避免使用它们,,更确切的说,应当小心,只有在必要时才使用它们。同一函数中没有必要多次访问同一个对象成员,应该用局部变量先得到对象成员,把它缓存起来后面的代码使用这个变量,而非对象成员。这样就减少了访问对象成员的次数,性能提升。注意:如果对象成员值会改变,不适用对象方法一般不适用,只用来缓存对象属性,因为方法给变量后,有可能会改变方法的作用域,导致方法执行错误 阅读全文
posted @ 2011-09-15 07:38 顺武 阅读(394) 评论(0) 推荐(0) 编辑