导入
上下文:一款多人在线角色扮演游戏
运用你到目前为止所学的关于 JavaScript 面向对象编程的知识。
作为提醒,以下是我们的极简角色扮演游戏(RPG)的代码。它创建了一个名为 aurora 的对象字面量,包含四个属性(name、health、strength 和 xp),以及一个 describe() 方法。
1const aurora = { 2 name: "Aurora", 3 health: 150, 4 strength: 25, 5 xp: 0, 6 7 // 返回角色描述 8 describe() { 9 return `${this.name} 有 ${this.health} 点生命值,${this.strength} 点力量,${this.xp} 点经验值`; 10 } 11}; 12 13// Aurora 被箭矢击中 14aurora.health -= 20; 15 16// Aurora 获得一件力量项链 17aurora.strength += 10; 18 19// Aurora 学会了一个新技能 20aurora.xp += 15; 21 22console.log(aurora.describe());
为了让游戏更有趣,我们希望在游戏中加入更多角色。于是,Aurora 的伙伴 Glacius 登场了。
1const glacius = { 2 name: "Glacius", 3 health: 130, 4 strength: 30, 5 xp: 0, 6 7 // 返回角色描述 8 describe() { 9 return `${this.name} 有 ${this.health} 点生命值,${this.strength} 点力量,${this.xp} 点经验值`; 10 } 11}; 12console.log(glacius.describe());
...
Glacius 和 Aurora
我们的两位角色非常相似。它们拥有相同的属性,唯一的区别在于属性值的不同。
你应当已经意识到,代码重复是危险的,通常应尽量避免。我们必须找到一种方法来共享角色之间的共性。