以下是我的代码,

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);


我创建了hostile,并在update方法中调用了此实例,但hostile.move()但是var hostile起作用,var hostile无效,我检查了代码hostile是其中的唯一引用文件。

最佳答案

var hostile = new hostile(20,20);


您只是重写了hostile变量以引用该实例而不是构造函数。

这是构造函数按惯例是UpperCamelCase的原因之一

关于javascript - 无法在JavaScript中创建新实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19542854/

10-12 15:52