js类静态方法引用self(就像php中的self)

时间:2017-08-24 13:56:48

标签: javascript typescript

有没有办法在没有明确指定类的情况下引用包含静态方法的类。所以不要这样:

output.logstash

这样的事情:

class User {
    static welcome = 'Hello'

    static greet() {
        console.log(User.welcome)
    }
}

2 个答案:

答案 0 :(得分:3)

一个类只不过是一个函数对象。静态方法只不过是该对象的函数属性。无论何时调用obj.method()this都会引用该函数内的对象。

因此,如果您使用User.greet()调用该方法,this将引用函数对象User

class User {
  static get welcome() {
    return 'hello';
  }

  static greet() {
    console.log(this.welcome)
  }
}

User.greet();

实例方法中,您可以通过this.constructor引用该课程。

答案 1 :(得分:1)

你总是可以使用“这个”:

class User {
  static welcome = 'Hello';

  static greet() {
        alert(this.welcome)
  }
}

User.greet();

但是在静态方法的情况下,它将引用类型本身。

以下是关于“this”值的specs says

  

当根声明是实例成员或构造函数时   class,ThisType引用该类的this-type。

     

当根声明是接口类型的成员时,   ThisType引用该接口的这种类型。