高性能JavaScript笔记之数据存取 (下)

什么是对象成员

对象成员包括属性和方法。当一个被命名的的成员引用了一个函数,该成员就被称为一个“方法”,相反,引用了非函数类型的成员就被成为“属性”。对象成员可以分为两类,实例成员(也成为 own 成员)和原型成员,实例成员直接存在于实例成员中,原型成员则从对象原型继承而来。

嵌套成员

由于对象成员可能包含其他成员,例如不常见的写法:window.location.href。每次遇到点操作符,嵌套成员会导致 JavaScript 引擎搜索所有对象成员。对象成员嵌套越深,读取速度就会越慢。例如执行 location.href 总比 window.loacation.href 要快

缓存对象成员

在必要的时候使用对象成员,尽量避免使用他们。例如,在同一个函数中没必要多次读取同一个对象成员。

function hasEitherClass(element,className1,className2){
	return element.className == className1 || element.className == className2;
}

以上代码中,element.className 被读取了两次。很显然,在该函数语句中它的值并未改变,却仍然执行力两次对象成员查找。你可以将值保存在局部变量中来减少一次查找。

function hasEitherClass(element,className1,className2){
	var currentClassName = element.className;
	return currentClassName  == className1 || currentClassName == className2;
}

之前说过查找局部变量更快。

小结

  • 嵌套的对象成员会明显影响性能,尽量少用。
  • 属性或方法在原型链中的位置越深,访问它的速度就越慢。
  • 通常来说,你可以通过把常用的对象成员、数组元素、跨域变量保存在局部变量中来改善 JavaScript 性能,因为局部变量访问速度更快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值