这是为什么最好不要从构造函数中调用公共实例方法的一个例子。当你
Base
类构造函数调用
this._public()
,
Child
的初始化尚未完成。最早可以使用
小孩
成员是
之后
super()
回来了,以前没有。只是在之后
super()
返回那个
小孩
的自动初始化(例如设置私有字段和方法,以及初始化通过类字段语法定义的公共属性)已经完成。您也可以在公共类字段中看到这一点:
class Base {
constructor() {
console.log("test" in this); // false
}
}
class Child extends Base {
test; // <== Public class field
constructor() {
super();
console.log("test" in this); // true
}
}
new Child();
你可以打电话
这个_public()
从…起
小孩
的构造函数
super()
return(不过,再次强调,最好不要从构造函数中调用公共方法!最好调用
#privateMethod
直接),因为
小孩
届时将完全准备就绪(当然,除了您在其构造函数中进行的任何初始化),但不是
之前
super()
返回。