应该'这个。'或者' var'用于在Javascript类中创建变量,或者使用哪个变量无关紧要。显然是那些用这个定义的。可以从对象外部访问,而用var定义的那些不会,但是还有其他差异吗?
function myClass() {
this.count = 0;
this.oTimer = null;
this.getCount = function() { return(this.count); }
}
oMyObj = new myClass();
oMyObj.getCount(); // returns 0

而不是
function myClass2() {
var count = 0;
var oTimer = null;
this.getCount = function() { return(count); }
}
oMyObj = new myClass2();
oMyObj.getCount(); // returns 0

答案 0 :(得分:2)
在评论中试图比Dominique更详细地解释一下:
如果使用var
关键字,则该变量仅在它们运行的范围内有效。这意味着在运行构造函数(函数体)之后,变量会丢失(因为它们仅在构造函数中有效)。
如果要访问构造函数之外的变量(例如成员方法),则必须通过this
关键字将变量绑定到类本身。现在它们的范围是类本身,而不仅仅是构造函数。
编辑:
进一步解释:虽然你可以在构造函数中声明的方法中使用用var
声明的变量,因为它们是在同一范围内定义的(参见问题示例),但是无法访问它们通过您通过Function.prototype
添加的任何其他添加方法。
为了表明这一点,我创建了一个小JSFiddle example
因此,通常更好的做法是使用this
关键字定义类的所有变量(您不仅打算在构造函数中用作临时变量)。