var exports = this;
(function($){
var mod = {};
mod.create = function(includes){
var result = function(){
this.init.apply(this, arguments);
};
result.fn = result.prototype;
result.fn.init = function(){};
result.proxy = function(func){
return $.proxy(func, this);
};
result.fn.proxy = result.proxy;
result.include = function(ob){
$.extend(this.fn, ob);
};
result.extend = function(ob){
$.extend(this, ob);
};
if(includes) result.include(includes);
return result;
};
exports.Controller = mod;
}(jQuery));
(function($){
$(function(){
var ToggleView = Controller.create({
init: function(view){
this.view = $(view);
this.view.mouseover(this.proxy(this.toggleClass));
this.view.mouseout(this.proxy(this.toggleClass));
},
toggleClass: function(e){
this.view.toggleClass('over', e.data);
}
});
new ToggleView('#view');
});
}(jQuery));
<div id="view"></div>
#view{
width:100px;
height:100px;
background:#000;
}
#view.over{
background:#cc0000;
}
External resources loaded into this fiddle: