如何通过另一个对象访问一个对象?

时间:2019-01-16 01:09:01

标签: javascript javascript-objects code.org

我正在尝试作为一个初学者创建国际象棋游戏,我遇到的问题之一是我需要一个棋子架来保持分配给棋子的值。作品持有人会更改每件作品的位置,但我需要更改原始作品的价值

我尝试添加另一个Holder对象,但这将导致相同的问题。然后,我尝试只留下点点滴滴,看看程序是否无法识别它是否可以正常工作。然后,我将括号括起来,希望它会被更改然后注册,但是它也不起作用。

function pieces(piece ,posX, posY, moveCount, tileLocation, turn) {
  this.piece = piece;
  this.posX = posX;
  this.posY = posY;
  this.moveCount = moveCount;
  this.tileLocation = tileLocation;
  this.turn = turn;
}
function pieceHolder(pieceHold, extra, turn, color, tile){
  this.pieceHold = pieceHold;
  this.extra = extra;
  this.turn = turn;
  this.color = color;
  this.tile = tile;
}
onEvent("wpawn1", "click", function() { //"wpawn1" is the id for another button
  holder.pieceHold = wpawn1.piece;
  holder.extra = 5;
  holder.turn = wpawn1.turn;
  holder.tile = wpawn1.tileLocation;
});


var holder = new pieceHolder();
var wpawn1 = new pieces("wpawn1", -5, 285, 0, "a2", 0, "w");
var wpawn2 = new pieces("wpawn2", 35, 285, 0, "b2", 0, "w");

holder.piece.tileLocation = holder.tile; // did not work
(holder.piece).tileLocation = holder.tile; // did not work

我希望将holder.piece转换为wpawn1或wpawn2之类的名称。然后将其注册为wpawn1.tileLocation或wpawn2.tileLocation。它们都不起作用,并且程序无法理解我的代码。

2 个答案:

答案 0 :(得分:0)

尝试一下:

var holder = new pieceHolder({});

在构造holder对象时,您不会传递任何内容,因此它是undefined。尝试访问holder.piece.tileLocation时,您尝试的是undefined中的tileLocation。 更好的方法是始终对您的参数使用默认值。

答案 1 :(得分:0)

语法很好,但是您试图在执行holder参数中的回调(函数)之前到达onEvent对象的内容。