super的问题

来源:7-2 【TS类型断言、转换应用】 类型断言的9种使用场景 1

薯片掉地上了

2021-11-01

class Parent{
  public n:number=2;
  constructor(){}
  public test(){
    console.log("object123")
  }
}

class Son extends Parent{
  public son!:number;

  constructor(){
    super();
  }
  public test(){
    console.log(super.n)
  }
}
let s = new Son();
s.test();

为什么子类方法里调用super.父类属性 得到的是undefined

写回答

1回答

keviny79

2021-11-01

super 和后端Java语言的super不完全一样。

    1.  在子类构造函数中这样 用 super() ——表示调用父类的构造函数 【第5章手写源码中有解释为什么可以调用父类构造函数,你可以往后看就明白了,如果看不明白再问,这样你的印象会更深!】

    2.  super 出现在子类实例方法中,super.方法() 编译成 js 后 会自动演变成 super.prototype.方法()

   3 super 无法调用父类实例属性,因为父类实例属性只能通过子类实例对象或父类实例对象来调用。


0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程