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