Javascript 为什么';超级';在构造函数中返回';未定义';

Javascript 为什么';超级';在构造函数中返回';未定义';,javascript,this,javascript-objects,super,Javascript,This,Javascript Objects,Super,我创建了一个名为Person的类,然后创建了另一个名为BMI的类,该类使用Person类中的两个参数,并使用super关键字。当我console.log我用super调用的两个参数时,它们返回undefined。如何使继承的参数返回所需的值 班级人员{ 构造函数(fName,lName){ this.firstName=fName; this.lastName=lName; this.fullName=函数(){ 返回this.firstName+“”+this.lastName; } } }

我创建了一个名为
Person
类,然后创建了另一个名为
BMI
的类,该类使用
Person
类中的两个参数,并使用
super
关键字。当我
console.log
我用super调用的两个参数时,它们返回
undefined
。如何使继承的参数返回所需的值

班级人员{
构造函数(fName,lName){
this.firstName=fName;
this.lastName=lName;
this.fullName=函数(){
返回this.firstName+“”+this.lastName;
}
}
}
让马克=新人(“马克”、“史蒂文森”);
console.log(mark.fullName())//返回“mark Stevenson”
类BMI扩展个人{
建造商(fName、lName、体重、身高){
超级(fName,lName);
质量=重量;
该高度=高度/100;
}
calcBMI(){
返回数学圆(this.mass/this.height**2);
}
显示(){
返回`${super.fName}${super.lName}的BMI为${this.calcBMI()}`;
}
}
让约翰=新体重指数('john','johnson',100190)

console.log(john.display())//返回“undefined的BMI为28”
您可以使用
this
,因为您扩展了Person类,并且设置了
this.firstName=fName
,所以您需要访问
this.firstName
而不是
this.fName

班级人员{
构造函数(fName,lName){
this.firstName=fName;
this.lastName=lName;
this.fullName=函数(){
返回this.firstName+“”+this.lastName;
}
}
}
让马克=新人(“马克”、“史蒂文森”);
console.log(mark.fullName())//返回“mark Stevenson”
类BMI扩展个人{
建造商(fName、lName、体重、身高){
超级(fName,lName);
质量=重量;
该高度=高度/100;
}
calcBMI(){
返回数学圆(this.mass/this.height**2);
}
显示(){
返回`${this.firstName}${this.lastName}的BMI为${this.calcBMI()}`;
}
}
让约翰=新体重指数('john','johnson',100190)

console.log(john.display())//返回“undefined的BMI为28”
不访问
super.fName
,访问
this.firstName
!在
Person
类中,您在哪里定义了
fName
?根据构造器,属性名为
firstName
lastName
5分钟到晚:-)。。。正确的答案已经在这里了。这是父类中方法的正确名称。我认为这是一个很常见的错误。