#javascript #class #methods
Вопрос:
class Human {
constructor(
kind, name, agility, mana, weapon, health) {
this.kind = kind;
this.name = name;
this.agility = agility;
this.mana = mana;
this.weapon = weapon;
this.health = health;
}
attack(enemyHealth) {
var neprijateljhp = document.querySelector(".enemyhealth");
if (this.kind === "archer") {
damageh = 30;
numberofattacksh = 2;
} else if (this.kind === "witch") {
damageh = 30;
numberofattacksh = 0.5;
} else if (this.kind === "swordswomen") {
damageh = 80;
numberofattacksh = 1.2;
}
enemyHealth = enemyHealth - damageh * numberofattacksh;
neprijateljhp.innerHTML = "Health:" enemyHealth;
}
}
var enemyHealth = 200;
let archer = new Human(
"archer",
"Anabelle",
"60",
"20",
"bow and arrow",
"200"
);
archer.attack(enemyHealth);
Комментарии:
1. Пожалуйста, предоставьте более подробную информацию: 1. HTML, 2. Что вы ожидаете, что произойдет, когда вы вызовете этот JS? 3. Что происходит вместо этого?
2.Кроме
enemyHealth =
того, назначение изменяет только локальнуюenemyHealth
переменную (определяемую параметром) в методе, а не глобальную. Обратите внимание, что переменные не передаются по ссылке в JS.
Ответ №1:
привет, у вас несколько ошибок. вы не определили урон и количество атак в конструкторе. тогда ваш класс не сможет их найти и выдаст вам ошибку. Я определил это и дал им 0 по умолчанию. конечно, вы можете изменить это.
это ваш код:
class Human {
constructor(
kind, name, agility, mana, weapon, health) {
this.kind = kind;
this.name = name;
this.agility = agility;
this.mana = mana;
this.weapon = weapon;
this.health = health;
this.damageh = 0;
this.numberofattacksh=0
}
attack(enemyHealth) {
var neprijateljhp = document.querySelector(".enemyhealth");
if (this.kind === "archer") {
this.damageh = 30;
this.numberofattacksh = 2;
} else if (this.kind === "witch") {
this.damageh = 30;
this.numberofattacksh = 0.5;
} else if (this.kind === "swordswomen") {
this.damageh = 80;
this.numberofattacksh = 1.2;
}
enemyHealth = enemyHealth - this.damageh * this.numberofattacksh;
neprijateljhp.innerHTML = "Health:" enemyHealth;
}
}
Комментарии:
1. спасибо вам за ваш вклад. я исправил это, а также понял, что проблема может заключаться в том, что имя параметра совпадает с именем переменной, которое я использую в качестве аргумента (enemyHealth). Еще раз спасибо вам, аган, и удачи вам в вашей работе!
2. Я рад, что вы смогли решить эту проблему. спасибо, мой друг. ты тоже. <3