是否可以将值与构造函数的参数进行比较?

时间:2016-11-16 01:50:01

标签: javascript html constructor

    function startMatch(){
      Wbrook0 = new component(50, 50, "pieces/WhiteBrook.png", 0, 0, "piece", "Wbro0");
      Wknight0 = new component(50, 50, "pieces/WhiteKnight.png", 50, 0, "piece", "Wknight0");
      Wbishop0 = new component(50, 50, "pieces/WhiteBishop.png", 100, 0, "piece", "Wbis0");
      Wqueen = new component(50, 50, "pieces/WhiteQueen.png", 150, 0, "piece", "Wque");
      Wking = new component(50, 50, "pieces/WhiteKing.png", 200, 0, "piece", "Wking");
      Wbishop1 = new component(50, 50, "pieces/WhiteBishop.png", 250, 0, "piece", "Wbis1");
      Wknight1 = new component(50, 50, "pieces/WhiteKnight.png", 300, 0, "piece", "Wknight1");
      Wbrook1 = new component(50, 50, "pieces/WhiteBrook.png", 350, 0, "piece", "Wbro1");
    }

    function helpme(){
      console.log(component.length); //This will output 7, which is how many parameters component has
      console.log(Bking.constructor.length); //Same here
    }

    function component(width, height, color, x, y, type, me){ 
      //Mostly unrelated stuff, the stuff I left just defines the parameters
      this.width = width;
      this.height = height;
      this.x = x;
      this.y = y;
      this.id = me;
    }

是否可以找到所有组件参数的所有当前值? (即如果我插入" x"到我要求进入console.log()的代码中,它将打印0,50,100,150,200,300和350。

我知道我可以为每个人做console.log(Wbrook.x),但我已经有32个这样做了,为了做我想做的事,我也需要做y和id在我搞砸之前,我想我是否有更简单的方法。

如果描述和标题含糊不清,我很抱歉,我对构造函数没有多少经验。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我会在实例化时将组件保存在数组中。然后,您可以查询该数组并选择所需的属性。

_allComponents = [];

function startMatch() {
  Wbrook0 = new component(50, 50, "pieces/WhiteBrook.png", 0, 0, "piece", "Wbro0");
  Wknight0 = new component(50, 50, "pieces/WhiteKnight.png", 50, 0, "piece", "Wknight0");
  Wbishop0 = new component(50, 50, "pieces/WhiteBishop.png", 100, 0, "piece", "Wbis0");
  Wqueen = new component(50, 50, "pieces/WhiteQueen.png", 150, 0, "piece", "Wque");
  Wking = new component(50, 50, "pieces/WhiteKing.png", 200, 0, "piece", "Wking");
  Wbishop1 = new component(50, 50, "pieces/WhiteBishop.png", 250, 0, "piece", "Wbis1");
  Wknight1 = new component(50, 50, "pieces/WhiteKnight.png", 300, 0, "piece", "Wknight1");
  Wbrook1 = new component(50, 50, "pieces/WhiteBrook.png", 350, 0, "piece", "Wbro1");
}

function helpme() {
  console.log(component.length); //This will output 7, which is how many parameters component has
  console.log(Bking.constructor.length); //Same here
}

function component(width, height, color, x, y, type, me) { //Mostly unrelated stuff, the stuff I left just defines the parameters
  this.width = width;
  this.height = height;
  this.x = x;
  this.y = y;
  this.id = me;
  _allComponents.push(this);
}

function getPropertyOfComponents(components, propertyName) {
  var values = [];
  components.forEach(function(component) {
    values.push(component[propertyName]);
  });
  return values.join(",");
}

startMatch();
console.log(getPropertyOfComponents(_allComponents, 'x'));