Этот код передает undefined
в CharacterStats
:
function Humanoid(PettyHumans){
this.team = PettyHumans.team;
this.weapons = PettyHumans.weapons;
this.language = PettyHumans.language;
CharacterStats.call(this.PettyHumans)
// ^^^^-------------- The problem is here
}
Предполагая, что вы вызываете Humanoid
через new Humanoid
, вы нигде не устанавливали это свойство.PettyHumans
это параметр, а не свойство.Либо установите его в качестве свойства, либо удалите this.
из этой строки.
Примечание: в нескольких местах кажется, что вы пытаетесь реализовать классовое наследование (например,между CharacterStats
и GameObject
), но код, который делает это, не является вполне правильным.См. этот ответ (который я также написал), чтобы узнать, как это исправить, продолжая использовать синтаксис ES5 или используя синтаксис ES2015 + class
.Но вкратце, минимальное изменение, чтобы исправить это, это добавить строку:
GameObject.call(stats);
this.healthPoints = stats.healthPoints
}
CharacterStats.prototype = Object.create(GameObject.prototype)
CharacterStats.prototype.constructor = CharacterStats // Add this (and similar when doing other inheritance)
Или, опять же, использовать class
.(Вы можете выполнить перенос, если вам нужно поддерживать только движки JavaScript ES5.)