全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js 数据存储和DOM编程

数据存储

·在javascript中,数据存储的位置会对代码整体性能产生重大的影响。

·数据存储共有4种方式:字面量、变量、数组、对象成员。

·要理解变量的访问速度,就要理解作用域。由于局部变量处于作用域的起始位置,因此访问速度比访问跨域作用域变量(即除起始位置之外的外层作用域变量)更快。即变量处在作用域的位置越深,访问速度越慢。这也就说明,访问全局变量的速度是最慢的。 总的来说,字面量和局部变量的访问速度快于数组和对象成员的访问速度。 

因此,常见的一些提高数据访问速度的方法有:

①避免使用with、try-catch中的catch语句,因为它会改变执行环境的作用域链。

②尽量少用嵌套对象、避免对象嵌套过深。

③可以把常需要访问的对象成员、数组项、跨域变量保存在局部变量中。

DOM编程

我们知道用javascript操作DOM会影响性能,这是为什呢。这个问题是“天生”的。

因为DOM是一个独立于语言的,用于操作XML和HTML文档的程序接口,而客户端脚本编程大多数时候是和底层文档打交道。所以推荐的做法就是尽可能少操作DOM。

有这么一些小技巧:

①如果需要多次访问某个DOM节点,使用局部变量存储它的引用。

②小心处理HTML集合,因为它实时联系着底层文档。

例如:

var divs= document.getElementsByTagName('div');
for(var i = 0;i < divs.length; i++){
 document.body.appendChild(document.creatElement('div'))
}

这是一个死循环,原因就是divs.length每次迭代都会增加,它反映的是底层文档的当前状态。

因此,我们在需要遍历某个HTML集合的时候,可以先把长度缓存起来再使用。而如果是要经常操作的集合,可以把整个集合拷贝到一个数组中。

③使用一些速度更快的API

例如:

childNodes -> children
childElementCount -> childNodes.length
firstElementChild -> firstChild
lastElementChild -> last Child
getElementByTagName ->querySelectorAll

④注意重绘和重排

1.由于每次重排都会产生计算消耗,大多数浏览器通过队列化修改并批量执行来优化重排过程。

而获取布局信息的操作会导致队列刷新,如下方法:

offsetTop,offsetLeft,offsetWidth,offsetHeight、
scrollTop,scrollLeft,scrollWidth,scrollHeight、
clientTop,clientLeft,clientWidth,clientHeight、
getComputedStyle

因为这些属性或方法需要返回最新的布局信息,因此浏览器不得不执行渲染列队中的“待处理变化”并触发重排以返回正确的值。

2.最小化重绘和重排,合并多次对DOM和样式的修改,如

var el = document.getElementById('mydiv');
el.style.margin = '5px';
el.style.padding = '2px';
el.style.borderLeft= '5px';

以上,修改了三个样式,每个都会影响元素的几何结构,最糟糕的情况下会导致三次重排(大部分现代浏览器为此做了优化,只会触发一次)

可以被优化为:

var el = document.getElementById('mydiv');
el.style.cssText = 'margin = '5px';padding = '2px';borderLeft= '5px';

3.需要对DOM元素进行一系列操作时,可以通过以下步骤:

1)使元素脱离文档流

2)对其应用多重改变

3)把元素带回文档中

具体方法有

     ·隐藏元素、应用修改、重新显示

     ·使用文档片段,在别的地方构建一个子树,再把它拷贝回文档

     ·将原始元素拷贝到一个脱离文档的节点,修改后再替换原始元素

⑤动画中使用绝对定位,使用拖放代理。

⑥使用事件委托来减少事件处理器的数量。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 存储数据  # dom编程  # 总结JavaScript三种数据存储方式之间的区别  # JavaScript数据存储 Cookie篇  # 关于AngularJs数据的本地存储详解  # JavaScript数据类型的存储方法详解  # JavaScript笔记之数据属性和存储器属性  # 高性能Javascript笔记 数据的存储与访问性能优化  # 实现JavaScript高性能的数据存储  # javascript 数据存储的常用函数总结  # JavaScript使用localStorage存储数据  # 文档  # 访问速度  # 数据存储  # 子树  # 更快  # 的是  # 是一个  # 这是  # 遍历  # 这是一个  # 这也  # 只会  # 可以通过  # 对其  # 拷贝到  # 会对  # 问题是  # 因为它  # 先把  # 它会 


相关文章: 如何在云主机快速搭建网站站点?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  ,有什么在线背英语单词效率比较高的网站?  建站之星官网登录失败?如何快速解决?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何彻底卸载建站之星软件?  建站之星logo尺寸如何设置最合适?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  ,如何利用word制作宣传手册?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何解决VPS建站LNMP环境配置常见问题?  模具网站制作流程,如何找模具客户?  如何选择高效可靠的多用户建站源码资源?  中山网站制作网页,中山新生登记系统登记流程?  公司网站设计制作厂家,怎么创建自己的一个网站?  详解jQuery中基本的动画方法  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  教学网站制作软件,学习*后期制作的网站有哪些?  C++如何使用std::optional?(处理可选值)  网站设计制作企业有哪些,抖音官网主页怎么设置?  如何挑选高效建站主机与优质域名?  已有域名如何免费搭建网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  建站之星安装后如何自定义网站颜色与字体?  如何获取PHP WAP自助建站系统源码?  建站之家VIP精选网站模板与SEO优化教程整合指南  手机网站制作与建设方案,手机网站如何建设?  移民网站制作流程,怎么看加拿大移民官网?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  建站之星安装路径如何正确选择及配置?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  长沙做网站要多少钱,长沙国安网络怎么样?  建站之星下载版如何获取与安装?  如何快速搭建高效可靠的建站解决方案?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  如何高效配置香港服务器实现快速建站?  招商网站制作流程,网站招商广告语?  Android滚轮选择时间控件使用详解  网站制作公司,橙子建站是合法的吗?  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  建站之星导航配置指南:自助建站与SEO优化全解析  太原网站制作公司有哪些,网约车营运证查询官网?  c++ stringstream用法详解_c++字符串与数字转换利器  如何快速搭建高效简练网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。