调用静态方法的标准方法是什么?我可以考虑使用constructor
或者使用类本身的名称,我不喜欢后者,因为它感觉没有必要。前者是推荐的方式,还是还有其他方式?
这是一个(人为的)示例:
class SomeObject {
constructor(n){
this.n = n;
}
static print(n){
console.log(n);
}
printN(){
this.constructor.print(this.n);
}
}
两种方法都是可行的,但是在使用重写的静态方法进行继承时,它们会做不同的事情。选择您期望其行为的人:
class Super {
static whoami() {
return "Super";
}
lognameA() {
console.log(Super.whoami());
}
lognameB() {
console.log(this.constructor.whoami());
}
}
class Sub extends Super {
static whoami() {
return "Sub";
}
}
new Sub().lognameA(); // Super
new Sub().lognameB(); // Sub
通过类引用静态属性实际上是静态的,并且不断给出相同的值。使用this.constructor
相反,将使用动态调度并引用当前实例的类,其中静态属性might具有继承的值,但也可以被覆盖。
这与 Python 的行为相匹配,您可以选择通过类名或实例来引用静态属性self
.
如果您希望静态属性不被覆盖(并且始终引用当前类的属性),就像在Java中一样 https://stackoverflow.com/q/2223386/1048572,使用显式引用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)