[英]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.x
和this.x
之间可能没有有意义的区别。 可能有所作为的是
var x = this.x, y = this.y;
// massive amounts of computation involving x and y
除非您真正参与一些前沿的游戏开发或其他工作,否则这种微优化可能不值得。 首先使您的算法和数据结构变得扑朔迷离,然后再担心这种事情。 您永远不会知道JavaScript运行时系统的开发人员何时会引入新的优化。 它们无法解决您的错误算法,但会极大地影响微观优化。
this
是访问x
和y
的标准方法。 你会从缓存得到没有改善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不会按值分配对象,而是按引用分配对象,这意味着self
和this
都指向同一对象。 这样做您一无所获。
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.