Web 前端性能优化——把 JavaScript 中的对象存储在变量中

1、为对象属性建立变量快捷方式

将对象属性赋值给变量,在使用对象属性的时候,用变量代替,有很多好处:

1)减少对象的搜索链

2)变量名比属性可读性更好

3)压缩代码

//以前的写法
document.body.addEventListener("click", function(){
    //时间处理程序
});

document.body.className = "user-" + ajaxResult.user[0].user.id;

document.documentElement.setAttribute("data-user-id", ajaxResult.user[0].user.id);


//现在的写法
var doc = document,
      body = doc.body,
      userid = ajaxResult.user[0].user.id;

body.addEventListener("click", function(){
    //时间处理程序
});

body.className = "user-" + userid;

doc.documentElement.setAttribute("data-user-id", userid);

(参考:http://www.gbtags.com/gb/share/1482.htm)


2、尽可能存储 NodeList 和选择器引擎 Collection

通常我们会写出这样的代码:

$(".nav a").css("display", "none");

$(".nav a").css("display", "block");
尽管现在的选择器引擎和浏览器已经在性能上快了不少,但是重复工作始终是会影响性能的。

我们最好是使用变量来存储 DOM 元素:

var $navA = $(".nav a");

$navA.css("display", "none");

$navA.css("display", "block");

(参考:http://www.gbtags.com/gb/share/1478.htm)


3、存储正则表达式

对于正则表达式,通常会有这样的代码

//判断 someValue 是否只包含数字
if(someValue.match(/(\d+)/g)){

}

这种写法的问题是:每次判定都会创建一个正则表达式对象,而需要它们完成的工作确是一样的。

这样的重复工作可以通过将正则表达式存储在一个变量中来避免


var digitsRegex = /(\d+)/g;

myInput.addEventListener("change", function(){
    if(myInput.value.match(digitRegex)){

    }
}):


(参考:http://www.gbtags.com/gb/share/1454.htm)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值