【问题标题】:creating multiple instances of an object in an array在数组中创建对象的多个实例
【发布时间】:2018-10-22 21:37:10
【问题描述】:

嘿,我正在开发一款游戏,该游戏涉及在游戏板上生成许多不同的敌人。我创建了一个具有随机速度和位置的敌人对象,并将该对象推送到一个数组中。

我现在怎样才能增加我的阵列中的敌人数量?

const allEnemies = []; 

let bugSpeed = randomNumber(5, 25) * 10;
let bugRow = randomNumber(1, 4);
enemy = new Enemy(bugRow, bugSpeed);

allEnemies.push(enemy); 

【问题讨论】:

  • 将所有四个底线放在一个循环中,并迭代你想要敌人的次数。

标签: javascript html css arrays oop


【解决方案1】:

您可以在您的类上添加multiply 方法,该方法接受一个数字并使用Array.from 方法返回当前实例的克隆。

const allEnemies = [];
class Enemy {
  constructor(row, speed) {
    this.row = row;
    this.speed = speed;
  }

  multiply(number) {
    return Array.from(Array(number), () => {
      return Object.assign(new Enemy, this);
    })
  }
}

const enemy = new Enemy(1, 3);

allEnemies.push(...enemy.multiply(5));
allEnemies[1].speed = 123;
console.log(allEnemies[1].multiply(3));
console.log(allEnemies)

【讨论】:

  • 也可以考虑使用静态方法。
【解决方案2】:

发布相同的纯javascript版本;

Enemy.prototype.multiply = function(multiplyBy){
   var that = this;
   Array.from(Array(multiplyBy), function(){
      var newEnemy = Object.assign(new enemy, that);
      allEnemies.push(newEnemy);
   });
}

【讨论】:

  • 如果我想乘以 5,我将如何实现?
  • 使用 Enemy 对象引用简单地调用乘法函数。 var 敌人 = 新敌人(你的参数);敌人.multiply(5);
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多