gpt4 book ai didi

javascript - 更改父类(super class)静态构造函数的返回值

转载 作者:行者123 更新时间:2023-12-02 21:54:36 26 4
gpt4 key购买 nike

我想通过仅添加新的(非静态)函数来扩展类,而不更改构造函数。我的父类(super class)只能从静态函数构造。现在,当我使用该静态函数构造子类时,我收到一个作为父类(super 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 操作。

最佳答案

您的问题是由于您的静态构造函数将始终返回 SuperClass 的实例,无论您创建什么子类。为了让第二个 console.log 返回 true,您需要将静态构造函数代码替换为 return new this()

关于javascript - 更改父类(super class)静态构造函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60036311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com