我什么时候应该使用this.x vs var x?

Kri*_*ian 6 javascript oop

在制作javascript类函数时,我使用this.了很多.但是在使用它时,它让我怀疑它是否会改变使用它var.

var myClass = function() {
    this.x = 4;
    return {
        getVal: this.x
    };
}
Run Code Online (Sandbox Code Playgroud)

与使用var相同的事情

var myClass = function() {
    var x = 4;
    return {
        getVal: x
    };
}
Run Code Online (Sandbox Code Playgroud)

什么是差异,什么时候应该使用它们?

Bla*_*ter 7

变量this变为public变量而变量var变为private变量.

使用this关键字声明的变量或函数成为类的实例成员,这意味着它们将在每个新创建的该类实例中可用.使用时this,您已经创建了一个类,您需要使用new关键字对其进行实例化,如下所示.

例:

function Foo() {
  // private var
  var bar = 'I am bar';
  // public var
  this.baz = 'I am baz';
}

var f = new Foo;
console.log(f.bar); // undefined
console.log(f.baz); // I am baz
Run Code Online (Sandbox Code Playgroud)

在制作javascript类函数时,我正在使用它.很多.但是在使用它时,它让我怀疑它是否会改变使用var.

this除非另有需要,否则不应使用您不希望出现在类实例中的关键字创建变量.这只会产生开销,并且像Crockford所说的那样是计算上的浪费.