读Javascript高性能编程重点笔记


Posted in Javascript onDecember 21, 2016

第一点

//高效简洁                     //低消能
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="https://3water.com/">三水点靠木</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";
Javascript 相关文章推荐
仅IE支持clearAttributes/mergeAttributes方法使用介绍
May 04 Javascript
jquery中的on方法使用介绍
Dec 29 Javascript
javascript制作的简单注册模块表单验证
Apr 13 Javascript
js实现简易的单数字随机抽奖(0-9)
Mar 19 Javascript
JavaScript 性能优化小结
Oct 12 Javascript
javascript针对cookie的基本操作实例详解
Nov 30 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
给easyui的datebox控件添加清空按钮的实现方法
Nov 09 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 Javascript
使用ng-packagr打包Angular的方法示例
Sep 21 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 #Javascript
原生的强大DOM选择器querySelector介绍
Dec 21 #Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
Dec 21 #Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 #Javascript
Vue.js 递归组件实现树形菜单(实例分享)
Dec 21 #Javascript
详解jQuery选择器
Dec 21 #Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 #Javascript
You might like
PHP实现的简单缓存类
2015/07/29 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
Django--权限Permissions的例子
2019/08/28 Python
python做接口测试的必要性
2019/11/20 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
中学门卫岗位职责
2013/12/26 职场文书
国家励志奖学金获奖感言
2014/01/09 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
十八大宣传标语
2014/10/09 职场文书
奖学金感谢信
2015/01/21 职场文书
老公婚前保证书
2015/02/28 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
八年级英语教学反思
2016/02/15 职场文书
如何在向量化NumPy数组上进行移动窗口
2021/05/18 Python
Python Django ORM连表正反操作技巧
2021/06/13 Python