javascript - 在 JS 中隐式使用重写的静态方法
问题描述
假设我有两个课程,A
并且B
. B
延伸A
. 它们看起来有点像这样:
class A {
localFunction() {
return a.staticMethod();
}
static staticMethod() {
return true;
}
}
class B extends A {
static staticMethod() {
return false;
}
}
所以我可以创建一个新的类实例A
const newA = new A();
然后调用将按预期newA.localFunction()
返回。true
但是当我创建一个新的类实例时B
const newB = new B();
然后调用newB.localFunction()
我仍然得到true
,因为该函数localFunction
从未重新定义。
我希望localFunction
类B
中使用类中定义的静态函数,B
但是我不想重新定义它。
解决方案
我实际上已经为我的问题制定了一个干净的解决方案。
只需使用this.constructor
而不是类名调用静态函数
class A {
localFunction() {
return this.constructor.staticMethod();
}
static staticMethod() {
return true;
}
}
this.will 允许类B
覆盖静态方法并以相同的方式调用它。
推荐阅读
- java - 使用 RxJava2 正确处理背压和并发
- bash - Script Bash Solaris SS7 Query 信令点
- angular - Angular 6:多种配置(twas 环境)
- python - 将嵌套列表转换为 Pandas DF
- python - 获取类属性的属性名
- redux - RXJS 订阅主题 - 操作必须是普通对象。使用自定义中间件进行异步操作
- java - Eclipse 霓虹灯挂起加载 org.eclipse.ui.navigator
- python - 如何使用 discord.py 事件处理程序 on_voice_state_update 仅在用户加入语音频道时运行
- http - 避免对缓存文件的请求
- c# - dotnet core 2 Web C# 对象引用未设置为对象的实例?