读Javascript高性能编程重点笔记
程序员文章站
2022-05-09 23:17:52
第一点
//高效简洁 //低消能
children //childnodes
c...
第一点
//高效简洁 //低消能 children //childnodes childelementcount //childnodes.length firstelementchild //firstchild lasteelmentchild //lastchild nextelementsibling //nextsibling previouselementsibling //previoussibling
第二点:选择器的高效应用
<div id="footer_bottom"> <a href="/aboutus.aspx"></a><a href="/contactus.aspx">联系我们</a><a href="/about/ad.aspx">广告服务</a><a href="/about/job.aspx">人才服务</a>©2006-2016 <a href="//www.jb51.net/"></a> </div>
var aarr1= document.queryselectorall("#footer_bottom a");//简洁高效 var aarr2 = docuement.getelementbyid("footer_bottom").getelementsbytagname("a");//繁杂低效 //return <a href="/aboutus.aspx"></a>, <a href="/contactus.aspx">联系我们</a>, <a href="/about/ad.aspx">广告服务</a>, <a href="/about/job.aspx">人才服务</a>, //选择第一个子节点 var a = document.queryselector("#footer_bottom a"); //return <a href="/aboutus.aspx"></a> //选择多个节点 var divs = document.queryselectorall("div.footer,div.main,div.header");
注意:大部分浏览器都支持上述属性,ie6,7,8仅支持children属性
减少dom的重新渲染与排版(三种方式)
1.先将要处理的元素隐藏,然后对其处理,最后显示
2.创建文件片段的方式(推荐) document.createdocumentfragment();
3.对要处理的元素克隆一个副本,然后对副本操作,最后将副本替换原本
下面是小编的补充
将循环的对象存储
使用前:
var str = "nanananana"; for (var n = 0; n < str.length; n++) {}
使用后:
var str = "nanananana", strlgth = str.length; for (var n = 0; n < strlgth ; n++) {}
循环对性能的消耗是很大的,将循环的对象存储,减少每次循环都要进行对象的计算。
最小化减少回流和重绘
使用前:
var coored = document.getelementbyid("ctghoteltab"); document.getelementbyid("ctghoteltab").style.top = coored.offsettop + 35 + "px";
使用后:
var coored = document.getelementbyid("ctghoteltab"), offettop = coored.offsettop + 35; document.getelementbyid("ctghoteltab").style.top = offettop + "px";