JavaScript コードに問題があります。この関数を数回実行するループを使用します。
addGameButton = function(color,id) {
gameButton[gameButton.length] = new GameButton(color,id);
};
したがって、gameButton という GameButton オブジェクトの配列があります。それぞれ異なる色と ID を持つ新しいゲームボタンを追加しようとしています。ただし、すべてのオブジェクトが同じ値を持つことになります。配列に値を割り当てる方法に問題があると思います。以下は全体の例です。
function GameButton(c, i) {
color = c;
id = i;
markup = '<div class="'+i+'"></div>';
this.getColor = function () {
return color;
};
this.getMarkup = function () {
return markup;
};
}
function GameBoard() {
gameButton = new Array();
addGameButton = function(color,id) {
gameButton[gameButton.length] = new GameButton(color,id);
};
this.createGameBoard = function (color) {
color = ["red", "green", "blue"];
addButtons(color);
};
addButtons = function (color) {
var i = 0;
for (i=0; i <color.length; i++) {
addGameButton(color[i],i);
}
};
this.getGameButton = function (index) {
return gameButton[index];
};
}
$(document).ready(function(){
gameBoard = new GameBoard();
gameBoard.createGameBoard();
b = gameBoard.getGameButton(0);
console.log(b.getColor());
// returns blue instead of red, also getGameButton(1) has the same values
});