在JavaScript OOPS中继承时获取未定义的值

在JavaScript OOPS中继承时获取未定义的值,javascript,javascript-objects,prototypal-inheritance,Javascript,Javascript Objects,Prototypal Inheritance,在JavaScript OOPS中继承时获取未定义的值。学生对象不继承Person对象 职能人员(姓名、年龄){ this.name=名称; 这个。年龄=年龄; this.say=函数(){ 返回this.name+“说你好…”; } } 风险值p1=新人(“Mahesh”,“33”); 变量p2=新人(“少女”、“30”); console.log(p1.say()); console.log(p2.say()); //继承权 函数student(){}; student.prototype

在JavaScript OOPS中继承时获取未定义的值。学生对象不继承Person对象

职能人员(姓名、年龄){
this.name=名称;
这个。年龄=年龄;
this.say=函数(){
返回this.name+“说你好…”;
}
}
风险值p1=新人(“Mahesh”,“33”);
变量p2=新人(“少女”、“30”);
console.log(p1.say());
console.log(p2.say());
//继承权
函数student(){};
student.prototype=新人();
var stud1=新学生(“Nakktu”,“32”);

console.log(stud1.say())您仍然必须从子类的构造函数中调用您的超类。有关更多信息,请参阅MDN链接

职能人员(姓名、年龄){
//如果未提供名称,则抛出错误。
如果(名称===未定义){
抛出“无法创建person的实例。需要名称”;
}
this.name=名称;
这个。年龄=年龄;
this.say=函数(){
返回this.name+“说你好…”;
}
}
风险值p1=新人(“Mahesh”,“33”);
变量p2=新人(“少女”、“30”);
console.log(p1.say());
console.log(p2.say());
//继承权
功能学生(姓名、年龄){
//你需要给你的超级班打电话。
人称(此、姓名、年龄);
};
//不要使用“newperson()”,当person()抛出时,代码将停止工作
//“name”参数为必需且缺少时出错。
student.prototype=Object.create(person.prototype);
var stud1=新学生(“Nakktu”,“32”);

console.log(stud1.say())谢谢@Thijs。这将帮助我更好地理解“继承”。:-)我已经更新了答案,在没有提供名称时抛出错误。当您将
student.prototype=
作业更改回
new person()时您将看到代码失败,而当前实现仍按预期工作。