代码改变世界

javaScript进阶-昂贵的集合

2011-12-17 21:23  dreamhappy  阅读(317)  评论(0编辑  收藏  举报
1 var alldivs = document.getElementsByTagName('div');
2 for (var i = 0; i < alldivs.length; i++) {
3 document.body.appendChild(document.createElement('div'));
4
5 }

/*函数是一个死循环,每次迭代都执行查询操作*/


/*集合拷贝到数组,循环数据比循环集合效率高*/

function toArray(coll) {
  for (var i = 0, a = [], len = coll.length; i < len; i++) {
    a[i] = coll[i];

  }
  return a;
}

  

var coll = document.getElementsByTagName('div');
var len = coll.length;
var arr = toArray(coll);

function loopCollection() {
  for (var count = 0; count < coll.length; count++) {
/*代码处理*/
  }
  }

  function loopCollection(coll) {
    for (var count = 0; count < arr.length; count++) {
    /*代码处理*/

  }
}

  

/*读取元素集合的length属性会引发集合进行更新,优化方法很简单,将集合长度缓存为局部变量*/

function loopCollection() {
  var alldivs = document.getElementsByTagName('div');
  var len = coll.length;
  for (var count = 0; count < coll.length; count++) {
    /*代码处理*/
  }
}
/*

1 当同一个Dom的属性和方法需要多次访问时,最好用一个局部变量缓存此成员
2 遍历一个集合时,首要的优化原则是把集合混存在局部变量中,并把length缓存在集合外部
总结*/