如何理解JavaScript中的“静态”?

时间:2016-01-15 05:24:01

标签: javascript ecmascript-6

{
    return (((globalx/2)-measurex)/(globalx/2));
}

我对class Foo { static get bar() { return 42; } get bar() { return 21; } } 感到困惑, 这段代码的目的是什么?谁可以给我一个明确的解释?

2 个答案:

答案 0 :(得分:1)

static get bar()

是一个不是特定于实例的getter。可以在不创建类Foo的实例的情况下使用它,如下所示:

alert(Foo.bar);

,而

 get bar()

是一个特定于对象的getter。它只能在创建类的对象后使用,如下所示:

var obj = new Foo();
alert(obj.bar);

答案 1 :(得分:0)

static类似于其他编程语言中的static关键字(如java,.net等)

当您的类中只有一次创建静态属性(方法,变量)并在所有类对象实例中共享时。

例如,如果您希望在课程内部拥有总用户数,则可以使用静态关键字

来实现

示例:

class User {
   Constructor() {
   }
   set name(name) {
   this.name = name;
   }
   get name() {
   return this.name;
   }  
   static userCount; 
}

当您创建新的用户实例时,您可以增加用户数。任何用户都可以访问userCount变量。要访问静态变量,您不能使用此关键字。因为它不属于任何实例。所以访问静态关键字使用以下

 User.userCount = 0;