无法理解一些用基本javascript编写的代码行。请解释一下

无法理解一些用基本javascript编写的代码行。请解释一下,javascript,javascript-objects,Javascript,Javascript Objects,我理解到正在制作的对象“角色”的部分。但当我们制作一个原型对象“Player”时,我并不理解它背后的概念 Player.initPlayer = function(name, health, force){......} 这是什么“.initPlayer” 这个函数没有名字,他们有没有其他方法来定义这个函数 像这样,有更多的函数没有任何名称,只是分配给玩家的对象,比如-Player.descripe=function(),这行中的“fight”是什么 实际代码位于此链接页面的底部: 在本页

我理解到正在制作的对象“角色”的部分。但当我们制作一个原型对象“Player”时,我并不理解它背后的概念

Player.initPlayer = function(name, health, force){......}
  • 这是什么“.initPlayer”
  • 这个函数没有名字,他们有没有其他方法来定义这个函数
  • 像这样,有更多的函数没有任何名称,只是分配给玩家的对象,比如-Player.descripe=function(),这行中的“fight”是什么
实际代码位于此链接页面的底部:

在本页最后一个主题的标题下:“下一个关卡:制作游戏!”

我也会在这里复制代码

var Character = {
    // Initialize the character
    initCharacter: function (name, health, force) {
        this.name = name;
        this.health = health;
        this.force = force;
    },
    // Attack a target
    attack: function (target) {
        if (this.health > 0) {
            var damage = this.force;
            console.log(this.name + " attacks " + target.name + " and causes " + damage + " damage points");
            target.health = target.health - damage;
            if (target.health > 0) {
                console.log(target.name + " has " + target.health + " health points left");
            } else {
                target.health = 0;
                console.log(target.name + " has been eliminated!");
            }
        } else {
            console.log(this.name + " can't attack (they've been eliminated).");
        }
    }
};

var Player = Object.create(Character);
// Initialize the player
Player.initPlayer = function (name, health, force) {
    this.initCharacter(name, health, force);
    this.xp = 0;
};
// Describe the player
Player.describe = function () {
    var description = this.name + " has " + this.health + " health points, " +
        this.force + " force points " + this.xp + " experience points";
    return description;
};
// Fight an enemy
Player.fight = function (enemy) {
    this.attack(enemy);
    if (enemy.health === 0) {
        console.log(this.name + " eliminated " + enemy.name + " and wins " +
            enemy.value + " experience points");
        this.xp += enemy.value;
    }
};

var Enemy = Object.create(Character);
// Initialize the enemy
Enemy.initEnemy = function (name, health, force, species, value) {
    this.initCharacter(name, health, force);
    this.species = species;
    this.value = value;
};

// ...
然后该方法调用运行上述代码

// ...

var player1 = Object.create(Player);
player1.initPlayer("Rainbow Dash", 150, 25);

var player2 = Object.create(Player);
player2.initPlayer("Applejack", 130, 30);

console.log("Welcome to the adventure! Here are our heros:");
console.log(player1.describe());
console.log(player2.describe());

var monster = Object.create(Enemy);
monster.initEnemy("Spike", 40, 20, "orc", 10);

console.log("A wild monster has appeared: it's a(n) " + monster.species + " named " + monster.name);

monster.attack(player1);
monster.attack(player2);

player1.fight(monster);
player2.fight(monster);

console.log(player1.describe());
console.log(player2.describe());

请解释一下。我确实让这个论点得到了通过和理解。我只是不理解构造。

因此,基本上,行
Player.initPlayer=function(name,health,force){……}
所做的是为将要创建的每个Player对象声明函数方法initPlayer()

这(大部分)和说的是一样的

var播放器={
initPlayer:function(params){function here}
}

除非它被声明为Player的构造函数的一部分,所以使用new关键字创建的每个Player对象都可以访问它

如果您不清楚这个语法,请阅读构造函数以及JS中声明和创建对象的不同方法