Q:

How can I create multiple instances of a class without defining them? 

So, I'm making a game on HTML5 canvas.  It's a top down shooter, and I need to create a bullet every time you click to make the character shoot. 
Initially, I just prevented the player from firing another bullet until it went out of bounds or it hit an enemy, as seen here.  This worked percetly, but of course, makes for uninteresting gameplay. 
Then, I began researching about JS classes, and I thought that it would be the key to the problem.  I created a bullet class, and moved all the logic for the bullet to the class.  Then, I created an instance of it, and called it in other parts of the code to execute its logic.  This worked exactly as it did before, which is good, because it meant I could translate the thing I had before to a class, but it had a similar issue. 
This is how the class is defined:
class bullet{

    constructor(_img, _piercing){

        this.bulletPic = document.createElement("img");
        this.img = this.bulletPic.src = _img;
        this.piercing = _piercing;
    }

    shoot(){
        this.bulletAngle = playerAngle;
        this.bulletX = playerX;
        this.bulletY = playerY;
        bulletShot = true;
        shots = 0;
    }

    draw(){
        canvasContext.save();
        canvasContext.translate(this.bulletX, this.bulletY);
        canvasContext.rotate(this.bulletAngle);
        canvasContext.drawImage(this.bulletPic, -this.bulletPic.width / 2, -this.bulletPic.height / 2);
        canvasContext.restore();

        if(bulletShot){
            this.bulletX += Math.sin(this.bulletAngle) * BULLET_SPEED;
            this.bulletY -= Math.cos(this.bulletAngle) * BULLET_SPEED;
        }

    }
}

And here is the object definition:
let bullet1 = new bullet("Textures/player.png", true);

If I want to shoot another bullet at the same time, I need to have already defined a new instance of the bullet class, is there any way for me to define a new instance every time I click? 
Edit: The shoot and draw methods are called in another file that follow logic that's not shown here.  Mainly what this other code does, is detect when it hits an enemy or when it goes out of bounds to set "bulletShot" to false, that makes it "despawn", and I can shoot another bullet.  This is part of the 1 bullet at a time limitation I'm trying to remove here, but that can go once this central issue is fixed. 

A:

I ended up making an array that contains multiple instances of the class.  I defined a variable that I used as a limit and then set up a for statement to create all the objects, then, I can call them using the array name and the position. 
for(var i = 0; i < arraySize; i++){
    arrayName[i] = new className(parameters);
}

Examples of usage:
arrayName[5].method();

