Сам конструктор у меня работал как надо.
Но не работает после того как я решил добавить метод getValues.
В нем он не определяет weapon.param; Скорее всего получает как undefined.
Потому что результаты сложения this._power = function(){return this.power + getValues(power)}; и тд и тп.
у меня получаются NaN.
Если вместо weapon.param поставить значение то все будет работать.
Чтобы не было вопросов что такое weapon - это свойство в которое передается объект со свойствами.
Сразу скажу оно точно впорядке и все передается, можно вместо weapon.param написать weapon.power (оно равно 0 предположим) все будет работать.
То-есть что то именно не так с записью самого метода и аргумента param.
Подскажите, что я делаю неправильно.
let Char = function ( lvl, name,
power, agil, inst, health,
crit, crit2,
dodge, dodge2,
def,
dmg1, dmg2,
weapon ) {
Obj.apply(this, arguments);
this.weapon = weapon;
getValues = function(param) {
let sum = 0;
sum = sum + weapon.param;
return sum;
}
this._lvl = function(){return this.lvl};
this._hp = function(){return this.health*10};
this._name = function(){return this.name};
this._power = function(){return this.power + getValues(power)};
this._agil = function(){return this.agil + getValues(agil)};
this._inst = function(){return this.inst + getValues(inst)};
this._health = function(){return this.health + getValues(health)};
this._crit = function(){return this.crit + getValues(crit)};
this._crit2 = function(){return this.crit2 + getValues(crit2)};//anti-crit
this._dodge = function(){return this.dodge + getValues(dodge)};
this._dodge2 = function(){return this.dodge2 + getValues(dodge2)};//anti-dodge
this._def = function(){return this.def + getValues(def)};
this._dmg1 = function(){return this.dmg1 + Math.round(this._power()*0.2) + getValues(dmg1)};
this._dmg2 = function(){return this.dmg2 + Math.round(this._power()*0.2) + getValues(dmg2)};
}