Search code examples
javascripthtmlobjectinstantiation

Unable to create a new instance in javascript


the following is my code,

function hostile(x, y) {
        this.speed = 1;
        this.health = 100; 
        this.x = x; 
        this.y = y; 
        this.height = 32;
        this.width = 32;
        this.isDead = false;
        this.direction = 0;

        this.move = function(){
             context.clearRect(0,0,canvas1.width,canvas1.height); 
             if (this.x > canvas.width - 64) {

                 this.y += 10;
                 this.direction = 0;
             }
             if (this.x < 0) {
                 this.y += 10;
         }

             if (this.direction === 1) {
                 this.x += this.speed;
         } else {
               this.x -= this.speed;
         }
             if (this.x < 0) {
               this.direction = 1;
             }

             if (this.y > 420) {
             //this might have to be changed
                 this.x = 600;
             }
         }  
    };
//CREATING AN INSTANCE OF HOSTILE, THIS ISN'T WORKING FOR MULTIPLE INSTANCES, BUT WHY?

var hostile = new hostile(20,20);
var hostileA = new hostile(20,20);

I have hostile created and I have this instance being called in the update method, hostile.move() however the var hostile works, the var hostile does not, I have checked the code hostile is the only reference in the file.


Solution

  • var hostile = new hostile(20,20);
    

    You just overwrote the hostile variable to refer to that instance rather than the constructor.

    This is one of the reasons that constructors are UpperCamelCase by convention