读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 相关文章推荐
如何用js控制css中的float的代码
Aug 16 Javascript
详解JavaScript中void语句的使用
Jun 04 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
Jan 25 Javascript
Javascript基础_标记文字的实现方法
Jun 14 Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 Javascript
微信小程序 引用其他js文件实现代码
Feb 22 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
Feb 27 Javascript
使用 vue.js 构建大型单页应用
Feb 10 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
Sep 25 Javascript
node+vue实现文件上传功能
May 28 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 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实现获取FLV文件的时间
2015/02/10 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
Laravel中正确地返回HTTP状态码方法示例
2019/09/10 PHP
动态控制Table的js代码
2007/03/07 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
原生JS实现图片翻书效果
2017/02/16 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
React Native 使用Fetch发送网络请求的示例代码
2017/12/02 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python的keyword模块用法实例分析
2015/06/30 Python
Python用模块pytz来转换时区
2016/08/19 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
pandas 对group进行聚合的例子
2019/12/27 Python
python标识符命名规范原理解析
2020/01/10 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
应届毕业生自我鉴定范文
2013/12/27 职场文书
建议书的格式
2014/05/12 职场文书
给校长的建议书200字
2014/05/16 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
关于保护环境的建议书
2019/06/24 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Java无向树分析 实现最小高度树
2022/04/09 Javascript
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
vue的项目如何打包上线
2022/04/13 Vue.js