Поскольку вы используете jQuery, вы можете рассмотреть возможность инкапсуляции поведения при использовании виджетов jQuery .Наличие множества автономных функций может быть сложно поддерживать, но виджеты позволят вам более аккуратно использовать такие вещи, как наследование и чистые интерфейсы.Например:
(function($) {
var DEAD_SPRITE_IDX = 0;
var HEALTHY_SPRITE_IDX = 1;
var WOUNDED_SPRITE_IDX = 2;
$.widget('creature', {
options: {
hitPoints: 100,
images: undefined
},
_create: function() {
var me = this;
this.element.css(
'background-image', this.options.images[HEALTHY_SPRITE_IDX]);
this.element.click(function() {
me.damage(25);
});
},
damage: function(points) {
this.hitPoints -= points;
if (this.hitPoints <= 0) {
this._die();
}
},
_die: function() {
this.element.css('background-image', this.options.images[DEAD_SPRITE_IDX]);
}
});
})(jQuery);
Вы бы использовали это так:
var monster = $('.the-creature').creature({
hitPoints: 500,
images: ['images/dead.png', 'images/healthy.png', 'images/wounded.png']});
monster.creature('damage', 15);