使用嵌套对象作为参数的new创建实例

时间:2019-02-07 15:30:22

标签: javascript object

我想创建对象播放器的实例,作为嵌套在其中的武器实例。

例如, player1应该以匕首开始游戏

我尝试了不同的方法,但嵌套对象(武器)不在播放器实例中。

function Weapon(name, damage) {
  this.name = name;
  this.damage = damage;
}

function Player(name, life) {
  this.name = name;
  this.life = life;

  this.weapon = {
    name: name,
    damage: damage
  };
}

const player1 = new Player("Joueur 1", 100, dagger);

const dagger = new Weapon("Dague", 5);
const sword = new Weapon("Epée", 10);
const axe = new Weapon("Hache", 15);
const flail = new Weapon("Fléau", 20);

将此武器添加为嵌套对象的正确语法是什么?

此外,武器可能会在比赛中发生变化。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找类似的东西,您当前正在尝试传递参数,但构造函数并不期望它。我已经举了两个例子说明如何实现这一目标。

function Weapon(name, damage) {
  this.name = name;
  this.damage = damage;
}

function Player(name, life, weapon) {
  this.name = name;
  this.life = life;

  this.weapon = weapon;
}

const dagger = new Weapon("Dague", 5);
const player1 = new Player("Joueur 1", 100, dagger);

const player2 = new Player("Joueur 1", 100, new Weapon("Dague", 5));

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