'this' 的速度与 javascript 中的缓存变量相比?

The speed of 'this' vs a cached var in javascript?

我通常不太关心微优化,直到涉及 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 {
       //....
    }
}

任何其他关于进一步优化的建议都将受到欢迎,这是我第一次真正做到这一点。干杯。

不,您不会看到任何改进。如果有任何差异,那将是一个微小的性能下降,因为有额外的语句。

你可能见过类似的东西:

var $this = $(this);

在 jQuery 中。这很有意义,因为 $(this) 的计算成本很高,因此可以通过将 $(this) 分配给一个变量然后在任何地方使用该变量来大大改进散落着 $(this) 的代码。不过,就您而言,评估节省成本并不昂贵。访问 _this 的时间与访问 this.

的时间一样长