读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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
google 搜索框添加关键字实现代码
Apr 24 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
jQuery实现点击关注和取消功能
Jul 03 jQuery
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
基于Two.js实现星球环绕动画效果的示例
Nov 06 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
Jan 07 Javascript
基于vue2.x的电商图片放大镜插件的使用
Jan 22 Javascript
webpack4.x下babel的安装、配置及使用详解
Mar 07 Javascript
微信小程序canvas分享海报功能
Oct 31 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
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
详解js异步文件加载器
2016/01/24 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
详解Vue This$Store总结
2018/12/17 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
javascript数组元素删除方法delete和splice解析
2019/12/09 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python fileinput模块使用介绍
2014/11/30 Python
python统计日志ip访问数的方法
2015/07/06 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
python基于C/S模式实现聊天室功能
2019/01/09 Python
详解python中*号的用法
2019/10/21 Python
使用python模拟高斯分布例子
2019/12/09 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
高二物理教学反思
2014/02/08 职场文书
国窖1573广告词
2014/03/21 职场文书
学校欢迎标语
2014/06/18 职场文书
改进作风怎么办发言材料
2014/08/17 职场文书
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
python热力图实现的完整实例
2022/06/25 Python