gpt4 book ai didi

typescript - 使用多级继承扩展基类方法( typescript )

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:29 24 4
gpt4 key购买 nike

我有 3 个类:

class A{
DoStuff(){
return "Called from A";
}
}

class B extends A {

constructor(){
super();
var baseDoStuff = super.DoStuff;
this.DoStuff = function(){
return baseDoStuff() + " and Called from B";
}
}
}

class C extends B {
constructor(){
super();
var baseDoStufffff = super.DoStuff;
this.DoStuff = function(){
return baseDoStufffff() + " and Called from C";
}
}
}

我希望类 C 的 DoStuff() 调用 B 的 DoStuff()(后者又会调用 A)。

然而,在 C 上调用 DoStuff() 只会返回“从 A 调用和从 C 调用”。我在这里做错了什么?这不也应该调用B的方法吗?

可以在这里找到一个工作示例:

Example

最佳答案

每当您需要使用 super 时,请使用类 methods 而不是类 members:

class A{
DoStuff(){
return "Called from A";
}
}

class B extends A {

constructor(){
super();

}
DoStuff (){
return super.DoStuff() + " and Called from B";
}
}

class C extends B {
constructor(){
super();
}

DoStuff(){
return super.DoStuff() + " and Called from C";
}
}

var c = new C();
console.log(c.DoStuff());

Try it (打印 Called from A and Called from B and Called from C)

这是因为 super 转换为 .prototypesuper.DoStuff() 变成了 _super.prototype.DoStuff().prototype 上唯一可用的是类方法。

更多:http://basarat.github.io/TypeScriptDeepDive/#/super

关于typescript - 使用多级继承扩展基类方法( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839146/

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