// ts跟es6的区别 就是 在定义属性的时候需要先定义一下这个属性的类型 // 构造函数里如果要传参也要指定参数的类型
上面示例中,constructor()方法和toString()方法内部,都出现了super关键字。super在这里表示父类的构造函数,用来新建一个父类的实例对象。 ES6 规定,子类必须在constructor()方法中调用super(),否则就会报错。所以父类的构造函数必定会先运行一次
. super 关键字 super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。
第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。 作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。
第二种情况,super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。 由于super指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过super调用的。