更改 super class' 静态构造函数的 return 值
Change return value of super class' static constructor
我想通过仅添加一个新的(非静态)函数而不更改构造函数来扩展 class。我的 super class 只能从静态函数构造。现在,当我用那个静态函数构造我的 sub class 时,我收到一个对象,它是 super class 的一个实例,尽管我想要 sub class。在不改变 super class?
的情况下,我可以做些什么来实现我正在寻找的东西
这是一个最小的例子:
class MySuperClass {
static staticConstructor() {
return new MySuperClass()
}
}
class MySubClass extends MySuperClass {
addedFunction() {}
}
const mySuperClass = MySuperClass.staticConstructor()
console.log(mySuperClass instanceof MySuperClass) // true
const mySubClass = MySubClass.staticConstructor()
console.log(mySubClass instanceof MySubClass) // false, I want this to be true
console.log(mySubClass instanceof MySuperClass) // true
// calling mySubClass.addedFunction results in an error due to wrong instance
PS:我在这里找不到解决方案,但我很确定应该有一个。每次搜索都会导致一些 DOM 操纵,而我显然不想要这些操纵。
您的问题是由于您的静态构造函数总是 return SuperClass 的一个实例,无论您创建什么子类。对于第二个 console.log
到 return true,您需要将静态构造函数代码替换为 return new this()
我想通过仅添加一个新的(非静态)函数而不更改构造函数来扩展 class。我的 super class 只能从静态函数构造。现在,当我用那个静态函数构造我的 sub class 时,我收到一个对象,它是 super class 的一个实例,尽管我想要 sub class。在不改变 super class?
的情况下,我可以做些什么来实现我正在寻找的东西这是一个最小的例子:
class MySuperClass {
static staticConstructor() {
return new MySuperClass()
}
}
class MySubClass extends MySuperClass {
addedFunction() {}
}
const mySuperClass = MySuperClass.staticConstructor()
console.log(mySuperClass instanceof MySuperClass) // true
const mySubClass = MySubClass.staticConstructor()
console.log(mySubClass instanceof MySubClass) // false, I want this to be true
console.log(mySubClass instanceof MySuperClass) // true
// calling mySubClass.addedFunction results in an error due to wrong instance
PS:我在这里找不到解决方案,但我很确定应该有一个。每次搜索都会导致一些 DOM 操纵,而我显然不想要这些操纵。
您的问题是由于您的静态构造函数总是 return SuperClass 的一个实例,无论您创建什么子类。对于第二个 console.log
到 return true,您需要将静态构造函数代码替换为 return new this()