#javascript
#nodejs
我的脚本中有3个类(A,B,C)。 B类扩展了A类,而B类内部则是一种调用C类新实例的方法。
示例代码:
// First class
class A {
constructor() {
this.name = 'Eve';
}
getName() {
return this.name;
}
}
class B extends A {
constructor(age) {
this.age = age;
}
getAge() {
return this.age;
}
getC() {
// This is where I needed a solution
return new C();
}
}
class C {
constructor() {
this.address = 'Market Village';
}
getAllInfo() {
return this;
}
}
如果运行以下代码,则预期输出应为:
let b = new B(18);
let info = b.getC().getInfo();
console.log(info); // {address: 'Market Village'}
但是我想让类C继承类A和B的所有属性和方法,以便类C能够使用两个类的属性和方法。
我尝试了几种方法,但是没有用。
尝试1:此方法将类A和B的所有属性和方法注入到类C中,但问题是它抛出一个错误,提示cannot set ... of undefined
,由于某种原因,类C的方法未读取:
getC() {
C.calls(this);
}
尝试#2
此方法读取C类的所有方法,并注入A类和B类的所有属性,但不注入其方法。同样,当您在类C中调用类A和B的任何方法时,都会引发错误:
getC() {
let _classC = new C();
Object.assign( _classC, this );
return _classC;
}
有没有办法调用类C的新实例并注入类B和A的所有属性和方法?
请注意,C类必须是独立的类,并且不能扩展这两个类。
非常感谢您的帮助。
答案 0 :(得分:1)
希望这会有所帮助:
class A {
constructor() {
this.name = 'Eve';
}
getName() {
return this.name;
}
}
class B extends A {
constructor(age) {
super();
this.age = age;
}
getAge() {
return this.age;
}
getC() {
let _classC = new C();
Object.assign( _classC, this );
return _classC;
}
}
class C {
constructor() {
this.address = 'Market Village';
}
getInfo() {
return this;
}
}
let b = new B(18);
let info = b.getC().getInfo();
console.log(info);