Это потому, что значение this
зависит от как вы звоните turnTiles
.
Потому что вы делаете:
DESKTOP.Game.prototype.turnTile(place, index)
... значение this
будет объектом prototype
, но pairs
помещается на каждый отдельный объект, созданный из Game
, а не на prototype
.
Понятия не имею, как вы звоните renderTiles
, но я бы предположил, что вы создали экземпляр Game
и вызвали его оттуда.
Не зная, как работает ваш код, я просто догадываюсь, что вы хотите, чтобы addEventHandler
также вызывался для экземпляра.
Если это так, вы должны заменить это:
(function(place, index) {
DESKTOP.Game.prototype.addEventHandler(aNod, 'click', function() { DESKTOP.Game.prototype.turnTile(place, index); return false; });
})(iterator, this.imgArray[iterator]);
с этим:
var self = this;
(function(place, index) {
self.addEventHandler(aNod, 'click', function() { self.turnTile(place, index); return false; });
})(iterator, this.imgArray[iterator]);
или что-то.
Хотя я не уверен, почему вы используете IIFE здесь, если вы не в цикле.