Javascript 类参数的继承

Javascript 类参数的继承,javascript,class,Javascript,Class,我想用所有NPC类参数和所有Civil类参数使Bob成为NPC,但是我不知道如何声明它,所以两个类都读取params关联数组来定义Bob属性 我的代码: class土木工程{ 构造函数(参数){ params[“gold”]?this.gold=params[“gold”]:this.gold=0; } } 人民代表大会扩大了民事权利{ 构造函数(参数){ 超级(); params[“name”]?this.name=params[“name”]:this.name=“未定义名称”; para

我想用所有
NPC
类参数和所有
Civil
类参数使Bob成为
NPC
,但是我不知道如何声明它,所以两个类都读取
params
关联数组来定义Bob属性

我的代码:

class土木工程{
构造函数(参数){
params[“gold”]?this.gold=params[“gold”]:this.gold=0;
}
}
人民代表大会扩大了民事权利{
构造函数(参数){
超级();
params[“name”]?this.name=params[“name”]:this.name=“未定义名称”;
params[“race”]?this.race=params[“race”]:this.race=“未定义种族”;
}
}
var bob=新NPC({
“姓名”:“鲍勃”,
“种族”:“人类”,
“黄金”:10
});
console.log(bob.name);

//返回Civil类中未定义的“params”
params
传递到
super()
。否则,类
Civil
将在没有任何参数的情况下启动,并且无法访问传递给
NPC
的参数。此外,您还可以将
这个
变量的赋值稍微缩短一点

class土木工程{
构造函数(参数){
如果(!params)抛出新错误(“必须设置参数”)
this.gold=params[“gold”]?params[“gold”]:0;
}
}
人民代表大会扩大了民事权利{
构造函数(参数){
如果(!params)抛出新错误(“必须设置参数”)
super(params);//此外,基于(super
调用中缺少params)和(在构造函数中使用默认参数),我将重写如下:

class土木工程{
构造函数(参数={“gold”:0}){
this.gold=params[“gold”];
}
}
人民代表大会扩大了民事权利{
构造函数(参数={name:“No name”,race:“No race”}){
超级(params);
this.name=params[“name”];
this.race=params[“race”];
}
}
var bob=新NPC({
“姓名”:“鲍勃”,
“种族”:“人类”,
“黄金”:10
});
log(“名称(带有自定义参数的NPC):”+bob.Name);//确定
bob=新NPC();

console.log(“Name(带有默认参数的NPC):”+bob.Name);//好,没有错误
super()
-你没有传递任何东西,因此为什么超级构造函数报告没有
参数
你实际上不必每次都检查
参数是否真实,你可以只做一次。做多次总比没有好;)那么什么时候最好检查它,这样我就不必每行都检查它了?你可以使用w米开朗基罗建议,在if/else中检查一次,或者像我一样,如果没有设置,则抛出一个错误,这取决于您喜欢的内容/详细程度。
(params={})
非常适合我使用,非常感谢!@J.Allain U还可以在父
构造函数中设置默认参数(params={name:'No name',race:'No race',gold:'No gold'})
,当您调用没有参数的类时,您会直接注意到这一点。