我通常不太关心微观优化,直到javascript UI性能(特别是在移动设备上)并保持神圣的16.666666667毫秒以获得平滑不间断的60fps。
我从requestAnimationFrame运行tick函数直到满足条件,并且它依赖于在当前实例上设置的某些值,例如this.velocity,this.translateX等。
我的问题是,是否应该使用this
的缓存版本,如在var _this = this;
之外在声明之外声明,而不是指“这个地方更快?”要清楚我已经多次调用了几次......下面是一些代码:
swipeIt.prototype.tick = function() {
if (Math.abs(this.translateX) < (+this.elWidth*1.2 && this.velocity > 6) ) {
this.velocity = this.velocity*1.15;
this.translateX = (this.dir === 'left') ? this.translateX - this.velocity : this.translateX + this.velocity;
requestAnimationFrame(function() {
_this._update(_this.updateCb);
_this.tick();
});
} else {
//....
}
}
任何其他关于进一步优化这一点的建议都会受到欢迎,这是我第一次真正给予这一点。欢呼声。
答案 0 :(得分:5)
不,你没有看到任何改进。如果存在任何差异,那么由于额外的声明,性能会有很小的下降。
您可能已经看过类似的内容:
var $this = $(this);
在jQuery中。这很有道理,因为$(this)
的评估代价很高,因此通过将代码分配给变量然后在任何地方使用该变量,可以大大改善充满$(this)
的代码。在你的情况下,评估保存没有任何代价。访问_this
只需访问this
。