javascript - 更改许多父属性而不将它们全部写出来
问题描述
有没有办法让我将 Warrior.stats 中的值与 Character.stats 中的值相关联,而无需为每个角色实例编写以下内容?
this.level = 4,
this.vitality = 11,
etc...
换句话说,始终将 CharacterChild.stats 写为数字数组。
class Character {
constructor(name, sex, gift, physique, stats) {
this.name = name;
this.sex = sex;
this.gift = gift;
this.physique = physique;
this.stats = ['level',
'vitality',
'attunement',
'endurance',
'strength',
'dexterity',
'resistance',
'intellegence',
'faith',
'humanity']
}
}
class Warrior extends Character {
constructor(name, sex, gift, physique, stats){
super(name, sex, gift, physique, stats)
this.stats = [4, 11, 8, 12, 13, 13, 11, 9, 9]
}
}
let dave = new Warrior('pla','ce','hold','er')
return dave.stats.level
//4
解决方案
使用休息和传播:
class Warrior extends Character {
constructor(...args) {
super(...args);
另一种选择是使用类字段this.stats
并完全省略构造函数(super
将自动调用,使用与调用子类相同的参数):
class Warrior extends Character {
stats = [4, 11, 8, 12, 13, 13, 11, 9, 9]
}
推荐阅读
- html - 我的 YouTube 嵌入无法在我的网站上运行
- wordpress - 无法调整 Divi 页脚 wordpress 上的图标字体大小
- api - 如何使用 REST API 在共享点中创建网页?
- jquery - 每当我尝试将浏览器窗口宽度调整为大于 600 像素时,导航栏右侧的菜单就会隐藏
- winforms - Winforms VLC Player 流媒体图像失真
- forms - Embed Form 和 EntityType 在 Embed Form 中选择关联实体
- c++ - 为什么 pow() 函数没有给出正确的结果来打印两个间隔之间的 armstrong 数,但 num*num*num 在 C++ 中给出?
- docker - 无法登录到私有 docker 注册表,它显示来自守护进程的错误响应:502 Bad Gateway
- biztalk - 无法在 BizTalk 逻辑应用适配器中配置
- html - 如何更正 CSS 样式的元素在按钮上不起作用