数据存储

·在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存储数据
# 文档
# 访问速度
# 数据存储
# 子树
# 更快
# 的是
# 是一个
# 这是
# 遍历
# 这是一个
# 这也
# 只会
# 可以通过
# 对其
# 拷贝到
# 会对
# 问题是
# 因为它
# 先把
# 它会
相关文章:
家庭服务器如何搭建个人网站?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
宁波免费建站如何选择可靠模板与平台?
PHP 500报错的快速解决方法
建站DNS解析失败?如何正确配置域名服务器?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何通过宝塔面板实现本地网站访问?
如何有效防御Web建站篡改攻击?
如何在企业微信快速生成手机电脑官网?
c# 服务器GC和工作站GC的区别和设置
小程序网站制作需要准备什么资料,如何制作小程序?
html制作网站的步骤有哪些,iapp如何添加网页?
再谈Python中的字符串与字符编码(推荐)
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
建站之星如何快速解决建站难题?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
如何在IIS7中新建站点?详细步骤解析
如何解决VPS建站LNMP环境配置常见问题?
如何在云虚拟主机上快速搭建个人网站?
网站制作网站,深圳做网站哪家比较好?
如何用y主机助手快速搭建网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
平台云上自助建站如何快速打造专业网站?
如何彻底卸载建站之星软件?
电商网站制作公司有哪些,1688网是什么意思?
宝塔新建站点报错如何解决?
创业网站制作流程,创业网站可靠吗?
如何用免费手机建站系统零基础打造专业网站?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
如何在腾讯云服务器快速搭建个人网站?
开源网站制作软件,开源网站什么意思?
网站制作企业,网站的banner和导航栏是指什么?
做企业网站制作流程,企业网站制作基本流程有哪些?
兔展官网 在线制作,怎样制作微信请帖?
高端网站建设与定制开发一站式解决方案 中企动力
如何在腾讯云免费申请建站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
建站之星后台密码如何安全设置与找回?
微信小程序 input输入框控件详解及实例(多种示例)
电商平台网站制作流程,电商网站如何制作?
C#如何序列化对象为XML XmlSerializer用法
建站之星导航配置指南:自助建站与SEO优化全解析
济南专业网站制作公司,济南信息工程学校怎么样?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。