NodeJS 对象之间的方法替换

mdfafbf1  于 2022-12-22  发布在  Node.js
关注(0)|答案(1)|浏览(110)

在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(而不是从类A)打印from_class_D_01呢?
我试过选角

const D_01 = new A_01("from_class_D_01") as B_01

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

bnlyeluc

bnlyeluc1#

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

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

现在,即使它是A_01的示例,它也将写入“from class B

相关问题