给定以下类层次结构:ChildClass
扩展ParentClass
,是否可以从ChildClass
构造函数访问ParentClass
构造函数?例如:
class ChildClass extends ParentClass
{
constructor()
{
super()
}
}
ChildClass.prop = 'prop'
class ParentClass
{
constructor()
{
if (this._child().prop == 'prop') // here
{
console.log("All ok");
}
}
get _child()
{
return this.constructor;
}
}
换句话说,我正在尝试做的是访问孩子的'静态'属性以进行验证
答案 0 :(得分:5)
是否可以从ParentClass构造函数访问ChildClass构造函数?
每个孩子都是父母,但不是每个孩子都是孩子。
没有。你不能。即使可能使用一些脏代码,也不要这样做。重新思考你的设计。在继承链中,每个Child都应该继承Parent的属性。不相反。
想想有3个孩子,你会得到哪些孩子的道具?长号。
答案 1 :(得分:2)
应该是this._child
而不是this._child()
,因为child
是属性访问者,而不是方法:
class ParentClass
{
constructor()
{
if (this._child.prop == 'prop')
{
console.log("All ok");
}
}
get _child()
{
return this.constructor;
}
}
_child
吸气剂是多余的,具有误导性。通常直接使用this.constructor
:
class ParentClass
{
constructor()
{
if (this.constructor.prop == 'prop')
{
console.log("All ok");
}
}
}
在父类中引用'child'在语义上是不正确的(父级不会也不应该'知道'其子级,_child
可以是父级本身),但是引用{{1不是。