有没有办法在没有明确指定类的情况下引用包含静态方法的类。所以不要这样:
output.logstash
这样的事情:
class User {
static welcome = 'Hello'
static greet() {
console.log(User.welcome)
}
}
答案 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引用该接口的这种类型。