给定两个类ClassA
和`ClassB
ClassA{
public foo;
constructor(){
this.foo = 'hey!';
}
}
有什么区别:
ClassB extends ClassA{
constructor(){
super();
}
}
和
ClassB{
private a;
constructor(){
this.a = new ClassA();
}
}
我问这个的原因是因为我已经实现了第一个方案,但每当我拨打super.foo
时,我都会undefined
,但如果我从第二个方案调用this.a.foo
,我得到了价值。
调用super()
和实例化父类的新实例有什么区别?
我正在使用TypeScript 2.1.5
答案 0 :(得分:1)
如果我尝试
class A{
public foo;
constructor(){
this.foo = 'hey!';
}
}
class B1 extends A{
constructor(){
super();
}
}
class B2 {
public a;
constructor(){
this.a = new A();
}
}
console.log(new B1().foo)
console.log(new B2().a.foo)
在这两种情况下我都嘿嘿。你有什么不同我
this.foo = 'hey!';
你没有这样做。但是你的代码应该给你一个编译时错误