Как получить доступ к объекту через другой объект? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать шахматную игру для новичка, одна из проблем, с которой я столкнулся, заключается в том, что мне нужен держатель фигуры для хранения значений, назначенных фигуре. Держатель фигуры изменит местоположение каждой фигуры, но мне нужно изменить значение оригинальной фигуры

Я попытался добавить еще один объект-держатель, но это привело бы к той же проблеме. Затем я попытался просто оставить точки и посмотреть, сработает ли это, что программа не может распознать. Затем я ставлю круглые скобки вокруг него в надежде, что он будет изменен, а затем зарегистрирован, но он тоже не работает.

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 голосов
/ 16 января 2019

Синтаксис в порядке, но вы пытаетесь достичь содержимого объекта holder, прежде чем будет выполнен обратный вызов (функция) в параметре onEvent.

0 голосов
/ 16 января 2019

Попробуйте это:

var holder = new pieceHolder({});

При создании объекта-держателя вы ничего не передаете как кусок, так что это undefined. При попытке получить доступ к holder.piece.tileLocation вы пытаетесь использовать tileLocation с undefined. Лучше было бы всегда использовать параметры по умолчанию для вас.

...