/*** @description 扩展function的原型* @function* @obj this的上下文*/if(!Function.prototype.bind){Function.prototype.bind = function(obj){var slice = [].slice,args = slice.call(arguments,1),self = this,nop = function(){},bound = function(){return self.apply(this instanceof nop ? this : (obj || {}),args.concat(slice.call(arguments)))}nop.prototype = self.prototype;bound.prototype = new nop();return bound}
}/*** @description Class 构造函数* @function* @public*/var Class = function(parent){var Klass = function(){this.init.apply(this,arguments)}/* @init method*/Klass.prototype.init = function(){}Klass.fn = Klass.prototype/** @ description 继承* @ function* @ public* @ params {Object} 父元素* */if(parent){var subClass = function(){}subClass.prototype = parent;Klass.fn = new subClass();}/** @ description 保持上下文* @ function* @ public*/Klass.proxy = function(func){var self = this;return (function(){func.apply(self,arguments)})}/** @ description */Klass.extend = function(obj){var extend = obj.extendfor(var i in obj){if(obj.hasOwnProperty(i)){Klass[i] = obj[i]}}extend && extend(Klass)}Klass.include = function(obj){var included = obj.includedfor(var i in obj){if(obj.hasOwnProperty(i)){Klass.fn[i] = obj[i]}}included && included(Klass)}Klass.fn.proxy = Klass.proxy;return Klass}/*创建实例 Button*/
var Button = new Class();
Button.include({init : function(element){this.element = $('#aa')this.element.click(this.proxy(this.click))}, click : function(){}
})