清晰的方法来构建JavaScript对象

时间:2014-03-29 20:04:31

标签: javascript

我刚刚开始使用Javascript,我不确定我是否已经为对象类型声明声明了这些正确。有没有更好的方法和更可读的方式在Javascript中将变量声明为一个类,或者这是最简单的方法。

blueObject只是我读过的空对象。这是在Javascript中创建简单对象类型的唯一方法,还是有更好更易读的方式?

代码:

    var blueObject={}; //Creates and object 
    var redObject={};  //Creates and object

    blueObject.x=0;
    blueObject.y=200;
    blueObject.dx=2;
    blueObject.width=48;
    blueObject.height=48;
    blueObject.image=new Image();
    blueObject.image.src="blueplus.png";

    context.drawImage(blueObject.image, 0, 0);
    blueObject.blueImageData=context.getImageData(0, 0, blueObject.width,
                                                  blueObject.height);
    context.clearRect(0,0,theCanvas.width, theCanvas.height);

    redObject.x=348;
    redObject.y=200;
    redObject.dx=-2;
    redObject.width=48;
    redObject.height=48;
    redObject.image=new Image();
    redObject.image.src="redcircle.png";

3 个答案:

答案 0 :(得分:4)

对于您的目的,这可能是最干净的方式。

var blueObject = {
    x: 0,
    y: 200,
    dx: 2,
    width: 48,
    height: 48,
    image: new Image()
};

var redObject = {
    x: 348,
    y: 200,
    dx: -2,
    width: 48,
    height: 48,
    image: new Image();
};

blueObject.image.src = "blueplus.png";
redObject.image.src = "redCircle.png";

context.drawImage(blueObject.image, 0, 0);
blueObject.blueImageData = context.getImageData(0, 0, blueObject.width,
                                              blueObject.height);
context.clearRect(0, 0, theCanvas.width, theCanvas.height);

另请参阅this answer了解更多正式创建JavaScript对象的方法。

答案 1 :(得分:0)

您可以像这样创建一个类颜色:

ColorClass = function(aX, aY, ..., aSrc){
    this.x = aX;
    this.y = aY;
    ...
    this.image = new Image();
    this.image.src = aSrc;
}

然后你可以像这样实现你的两个对象:

var blueObject = new ColorClass(0, 200, 2, ..., "blueplus.png"),
    redObject = new ColorClass(348, 200, ..., "redcircle.png");

答案 2 :(得分:0)

我喜欢显示模块模式,允许您拥有私有范围。你正在做的是合法的,但是你正在从外面修改这个对象,这通常是一种不好的做法。

var myClass = function(a, b){ // constructor
   var a = a;
   var b = b; 
   var c = a + b;

   return { // public signature
      c: c
   }
}();