Так что ваш код довольно неясен и чрезмерно сложен, если честно. Создание сетки пользовательских объектов функций Javascript - это слишком сложная задача: все, что вам нужно, это двумерный логический массив.
Подобные проблемы часто легче всего решить, если рассматривать их как две отдельные проблемы: проблемное пространство и мировое пространство. Проблемное пространство - это область, в которой вы решаете актуальную проблему. Пространство мира - это проблемное пространство, отображаемое на визуальный результат. Чтобы отделить его от вашей проблемы, представьте, что проблемное пространство - это двумерный массив логических значений, и тогда мировое пространство - это ваш холст.
Если вы хотите немного очистить симуляцию, вот подход, который может помочь:
//Have some parameters that you can change around
var cellSize = 10;
var cellsWide = 100;
var cellsHigh = 100;
//Instantiate and initialize a 2d array to false
var theGrid = new Array();
for (var i=0; i<cellsWide; i++) {
theGrid.push(new Array());
for (var j=0; j<cellsHeight; j++) {
theGrid[i].push(false);
}
}
//Attach a click event to your canvas (assuming canvas has already been dropped on page
//at the assigned width/height
$('#simCanvas').click(function(e) {
var i = Math.floor((e.pageX - this.offsetLeft)/cellSize);
var j = Math.floor((e.pageY - this.offsetTop)/cellSize);
theGrid[i][j] = !theGrid[i][j];
});
Это был бы гораздо более лаконичный способ решения проблемного пространства. Отображение проблемного пространства в мировое пространство немного проще, но если вам нужна помощь, просто дайте мне знать.
Приветствия