Javascript es6扩展已定义的类
我有一个Javascript es6扩展已定义的类,javascript,ecmascript-6,subclass,Javascript,Ecmascript 6,Subclass,我有一个Base类作为 class Base { constructor() { console.log('should get called') } } class Target { someFn() { // does something } } 和目标类作为 class Base { constructor() { console.log('should get called') } }
Base
类作为
class Base {
constructor() {
console.log('should get called')
}
}
class Target {
someFn() {
// does something
}
}
和目标
类作为
class Base {
constructor() {
console.log('should get called')
}
}
class Target {
someFn() {
// does something
}
}
我想在其定义后使目标
扩展基础
。我的意思是,我知道我可以简单地做到以下几点
class Target extends Base { ... }
但是,我仍然希望能够在定义了Target
后使用Base
扩展Target
我尝试了几种方法,但并不完全满意。可能吗
我可以做类基扩展目标{}
,但是它不再是同一个类了
我的基本目标是,;我想将构造函数添加到一个类中(我知道我做不到),以便找出一些方法。通过设置子类的原型,可以使现有类从另一个类“继承”。听起来有点复杂,所以这里是所有需要的:
class Base {}
class Child {}
Object.setPrototypeOf(Child.prototype, Base.prototype)
然而,这里有一个问题:子
的实现不是为了从另一个类继承而设计的-例如,如果基
构造函数正在做一些重要的工作(很多时候父构造函数会做一些初始化步骤)这将不会被称为,这意味着,你可能会遇到各种各样的错误
在您描述的上下文中,没有可行的解决方案以编程方式扩展类并确保调用父类的构造函数。这是因为无法“修补”子类的构造函数以实际调用父类的构造函数
您可能会试图覆盖Child.prototype.constructor
属性并在那里对其进行修补,但问题是这不是执行新建Child()时所称的,这是子函数本身-构造函数属性在这个过程中不起作用。为什么需要它?哈哈,好问题。。。实际上我不知道…:好的,我会解释,我想用一些方法定义很多类,每个类返回一些计算的结果。数据(这些公式将在其上运行)将传递到构造函数中(我想在其中预处理它)。。。所以我只想用公式方法保持公式类的干净,并在我的decorator函数或基类中执行所有其他操作。。。有意义吗?您的评论没有解释为什么要动态更改原型。它甚至不能解释你为什么需要继承。不,不行。。。我在上面的评论中解释过。根据您的更新进行更新。不幸的是,我看不到一个办法使这项工作。对不起,很难过。。。无论如何,谢谢你。