繁体   English   中英

Javascript-使用本地var还是这个?

[英]Javascript - Use local var or this?

我正在使用原型方法,这是场景

function Foo () {
    this.x = 5;
    this.y = 2;
    this.z = this.addValues();
}
Foo.prototype = {
    addValues:  function (){
        return this.x + this.y; 
    }
}

显然,这只是一个简单的例子。 在实际项目中,“ addValue”功能中会有很多活动。 使用'this'关键字100次还是将其缓存到局部变量中可以帮助改善性能,是否合适? 例如,以下内容会有什么不同?

Foo.prototype = {
    addValues:  function (){
        var self = this;
        return self.x + self.y; 
    }
}

self.xthis.x之间可能没有有意义的区别。 可能有所作为的是

  var x = this.x, y = this.y;

  // massive amounts of computation involving x and y

除非您真正参与一些前沿的游戏开发或其他工作,否则这种微优化可能不值得。 首先使您的算法数据结构变得扑朔迷离,然后再担心这种事情。 您永远不会知道JavaScript运行时系统的开发人员何时会引入新的优化。 它们无法解决您的错误算法,但会极大地影响微观优化。

this是访问xy的标准方法。 你会从缓存得到没有改善this通过声明一个局部变量,如果有的话,那你就浪费空间self摆在首位。

您将看到的唯一可能的风险是带有以下内容:

var f = new foo();
var stupid = f.addValues;
stupid(); // whoops - this is suddenly the global object, 
          // and your method is broken.

话虽这么说,我认为您不应该为滥用功能的人负责,我也不用担心。

同样,按照约定,要用作构造函数的函数应以大写字母开头。 考虑将foo重命名为Foo

在此示例中, this分配给self应该没有任何区别。 JavaScript不会按值分配对象,而是按引用分配对象,这意味着selfthis都指向同一对象。 这样做您一无所获。

foo.prototype = {
    addValue:  function (){
       // self and this point to the same object! 
       var self = this;
        return self.x + self.y; 
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM