读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 相关文章推荐
如何用javascript去掉字符串里的所有空格
Feb 08 Javascript
JS 字符串连接[性能比较]
May 10 Javascript
js特效,页面下雪的小例子
Jun 17 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
jquery复选框全选/取消示例
Dec 30 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 Javascript
一个简单的jquery进度条示例
Apr 28 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
学习Node.js模块机制
Oct 17 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
Vue 组件注册实例详解
Feb 23 Javascript
js实现继承的方法及优缺点总结
May 08 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 代码优化的42条建议 推荐
2009/09/25 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
ES6的新特性概览
2016/03/10 Javascript
浅谈js中StringBuffer类的实现方法及使用
2016/09/02 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
Python中的super用法详解
2015/05/28 Python
十个Python程序员易犯的错误
2015/12/15 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
2019/05/13 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
Django项目uwsgi+Nginx保姆级部署教程实现
2020/04/19 Python
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
销售自我评价
2013/10/22 职场文书
班组长安全职责
2014/01/05 职场文书
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers