Ghostdragon777 Ответов: 1

Может ли кто-нибудь помочь мне с этой проблемой объекта


Я пытаюсь использовать функции в качестве объектов и изучаю ключевое слово prototype. По какой-то причине я не могу этого понять. Может кто-нибудь сказать мне, как им пользоваться? Я пытался сделать что-то вроде класса rpg. Вот мой код...

var Fighter = function(CharName){
  this.weapon = "sword";
  this.speed = 4;
  this.defence = 5;
  this.attack = 9;
  this.name = CharName;
  this.health = 10;
}
var Dwarf = function(CharName){
  this.weapon = "Hammer";
  this.speed = 2;
  this.defence = 8;
  this.attack = 5;
  this.name = CharName;
  this.health = 10;
}
var Elf = function(CharName){
  this.weapon = "Dagger";
  this.speed = 7;
  this.defence = 3;
  this.attack = 6;
  this.name = CharName;
  this.health = 10;
}

var James = new Elf("James");

//I get the error here
James.prototype.Heal = function(){
  this.health++;
};


Заранее спасибо!!!

Что я уже пробовал:

Я пробовал смотреть онлайн, Смотреть видео и многое другое. Надеюсь, здесь мне помогут.

[no name]

http://www.w3schools.com/js/js_object_prototypes.asp

1 Ответов

Рейтинг:
5

Sergio Walter Ruz

Привет Ghostdragon777 - Профиль Специалиста[^]

Вот пример для объекта Elf.

var Elf = (function () {
    function Elf(chartName) {
        this.name = chartName;
    }
    Elf.prototype.Heal = function () {
        console.log("Healing");
    };
    return Elf;
}());
var James = new Elf("James");
James.Heal();


Однако было бы лучше иметь один класс и устанавливать соответствующие свойства из вашего кода времени выполнения, как в следующем примере:

var Character = (function () {
    function Character(chartName) {
        this.name = chartName;
    }
    Object.defineProperty(Character.prototype, "speed", {
        get: function () {
            return this._speed;
        },
        set: function (newSpeed) {
            if (3 < newSpeed && newSpeed < 7) {
                this._speed = newSpeed;
            }
            else {
                console.log("Invalid speed");
            }
        },
        enumerable: true,
        configurable: true
    });
    Character.prototype.Heal = function () {
        console.log("Healing");
    };
    return Character;
}());
var James = new Character("James");
James.speed = 10;
James.speed = 4;
James.Heal();
console.log(James.speed);


В приведенном выше примере у меня есть общий символьный класс с конструктором, который принимает имя и одно свойство для скорости. Обратите внимание, что в классе я проверяю скорость между 3 и 7, и если она выходит за пределы диапазона, я печатаю сообщение об ошибке на консоль и не разрешаю настройку свойства.
В приведенном примере установка скорости на 10 отклоняется классом, но установка скорости на 4 принимается.

Надеюсь, это поможет...