| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- (function ($){
- _Class=function(){
- var initializing=0,fnTest=/\b_super\b/,
- Class=function(){};
- Class.prototype={
- ops:function(o1,o2){
- o2=o2||{};
- for(var key in o1){
- this['_'+key]=key in o2?o2[key]:o1[key];
- }
- }
- };
- Class.extend=function(prop){
- var _super = this.prototype;
- initializing=1;//锁定初始化,阻止超类执行初始化
- var _prototype=new this();//只是通过此来继承,而非创建类
- initializing=0;//解锁初始化
- function fn(name, fn) {
- return function() {
- this._super = _super[name];//保存超类方法,此this后面通过apply改变成本体类引用
- var ret = fn.apply(this, arguments);//创建方法,并且改变this指向
- return ret;//返回刚才创建的方法
- };
- }
- var _mtd;//临时变量,存方法
- for (var name in prop){//遍历传进来的所有方法
- _mtd=prop[name];
- _prototype[name] =(typeof _mtd=='function'&&
- typeof _super[name]=='function'&&
- fnTest.test(_mtd))?fn(name,_mtd):_mtd;//假如传进来的是函数,进行是否调用超类的检测来决定是否保存超类
- }
- function F(arg1) {//构造函数,假如没有被初始化,并且有初始化函数,执行初始化
- if(this.constructor!=Object){
- return new F({
- FID:'JClassArguments',
- val:arguments
- });
- }
- if (!initializing&&this.init){
- if(arg1&&arg1.FID&&arg1.FID=='JClassArguments'){
- this.init.apply(this, arg1.val);
- }else{
- this.init.apply(this, arguments);
- }
- this.init=null;
-
- };
- }
- F.prototype=_prototype;//创建。。。
- F.constructor=F;//修正用
- F.extend=arguments.callee;
- return F;
- };
- return Class;
- }();
- $.Class=function(ops){
- return _Class.extend(typeof ops=='function'?ops():ops);
- };
- })(jQuery);
|