首页 > 解决方案 > 有没有办法使用类中的函数创建对象,例如:bullets[i] = new player1.bullet();?

问题描述

如果我有一个类、Player1 类和这段代码:

let player1;
let bullets = [];

function setup() {

        createCanvas(400, 400);
        player1 = new Player();
}

function draw() {

        player1.logic();
        player1.show();
        for(let i = 0; i < bullets.length; i++) {
            bullets[i].logic();
            bullets[i].show();
}

function keyPressed() {

        switch(keyCode) {
            case 32:
                b = new player1.bullet();
                bullets.push(b);
        }
} 

我能以某种方式在我的课堂上加入这个函数'new player1.bullet();' ??

我想要这个,因为我可以接受一些 player1 参数并将其交给子弹;

标签: javascriptjavascript-objects

解决方案


在 javascript 中,函数可以用作构造函数(在此处查看更多信息)。

因此,在您构造的对象内,您可以为另一个对象放置另一个构造函数。

function Player(name) {
  var _name = name;
  this.playerData = "some data of " + _name;

  this.Bullet = function() {
    this.bulletData = "some more data of " + _name;
  }
}

var player1 = new Player("Alice");
console.log(player1);

var player2 = new Player("Bob");
console.log(player2);

var bullet1 = new player1.Bullet();
console.log(bullet1);

var bullet2 = new player2.Bullet();
console.log(bullet2);


推荐阅读