I have a class and a prototype function for that class. However, "this.Name" comes back as undefined. Any ideas why? class AbilityScore { /**@Constructor @param {string} [name]: The name of the ability score you wish to load. @param {function} [callback]: A callback to call after all ability scores are ready. @param {ModifierCollection} [modifierCollection]: A readied ModifierCollection. */ constructor(name,callback,modifierCollection) { let score = Repository.AbilityScores[name]; this.__ready = callback; this.Name = name; this.Abbreviation = score.Abbreviation; getAttrs([ `AbilityScore_${name}_Base`, `AbilityScore_${name}_Roll`, `AbilityScore_${name}_Type` ], (attributes) => { this.Roll = attributes[`AbilityScore_${name}_Roll`] || 10; this.Base = attributes[`AbilityScore_${name}_Base`] || this.Roll; this.Type = attributes[`AbilityScore_${name}_Type`] || 'Normal'; if (modifierCollection) { this.ApplyModifiers(modifierCollection); } this.__ready(this.Name, this); }); } } /**@ApplyModifiers @param {ModifierCollection} [modifierCollection]: A readied ModifierCollection. */ AbilityScore.prototype.ApplyModifiers = (modifierCollection) => { debug.message('AbilityScore.p.AM.Name => ' + this.Name); let score = Repository.AbilityScores[this.Name]; this.Total = modifierCollection.ApplyModifiers([this.Name, "Ability Scores"], [], this.Base); this.BoundTotal = Math.max(Math.min(this.Total, score.Values.length), 1) let type = null; if (this.Type !== 'Normal' && score.Types) { type = score.Types[this.Type]; } _.each(score.DependentValues, (dv) => { this[dv.Key] = score.Values[this.BoundTotal - 1][dv.Key]; if (type && type[dv.Key]) { this[dv.Key] = modifierCollection.ApplyModifiers( [`${this.Name} Dependent Values`, `${dv.Value}`], [], evaluator.eval( type[dv.Key] , { b: this.BoundTotal, u: this.Total, x: this[dv.Key] } ) ); } }); }