对象之间的方法替换



在nodejs, typescript中,我想用另一个对象的方法代替一个对象的方法;为了更好地理解我的问题,我写了下面这个非常简单的例子(实际情况大致相同):

export default class A_01 {
constructor(private variableA1: string) {}
public writeSomething() {
console.log(`${this.variableA1} from class A`);
}
}
import A_01 from "./oop_class_A";
export default class B_01 extends A_01 {
constructor(private variableB1: string) {
super(variableB1);
}
public writeSomething() {
console.log(`${this.variableB1} from class B`);
}
}
import A_01 from "./oop_class_A";
class C_01 {
constructor() {}
run() {
return new A_01("Object A_01 from class C_01"); // cannot modify this object creation!!!
}
}
import A_01 from "./oop_class_A";
import B_01 from "./oop_class_B";
const D_01 = new A_01("from_class_D_01");
D_01.writeSomething();
那么,如何从类B中打印from_class_D_01(而不是来自A类)?
const D_01 = new A_01("from_class_D_01") as B_01

但它只是一个类型,我在运行时丢失了它

不确定这是否是您所需要的,这是在创建A_01实例之后覆盖writeSomething方法的一种非常简单的方法。

const D_01 = new A_01("from_class_D_01")
D_01.writeSomething = B_01.prototype.writeSomething
D_01.writeSomething()

现在它会写"from class "即使它是A_01

的实例

最新更新