jsfm.js
function getReleventClassInfo( Class, fn, pofn ) {
			/// this is script
			addPrototypeBeforeCall(Class, this.isAbstract);
			var tempObj, k, len;
			tempObj = invoke(Class, this.args, pofn.base, this.ics, this.Package, pofn);
			tempObj.setMe && tempObj.setMe(pofn);
			tempObj.base = pofn.base;
			delete tempObj.setMe;
			this.shortHand = tempObj.shortHand || this.shortHand;

			var info = separeteMethodsAndFields(tempObj);
			this.methods = info.methods = pofn.base ? info.methods.concat(pofn.base.prototype.$get('methods')) : info.methods;
			if (this.isInterface) {
				pofn.base && simpleExtend(pofn.base.prototype.$get('fields'), info.fields);
				this.fields = info.fields;
				checkMandSetF(pofn);
				deleteAddedProtoTypes(Class);
				return this;
			}

			if (tempObj.init){
				tempObj.init();
			}

			this.isAbstract && checkForAbstractFields(tempObj.Abstract, this.Class);
			this.Static = simpleExtend(tempObj.Static, {});
			this.isAbstract && (this.Abstract = simpleExtend(tempObj.Abstract, {}));
			this.staticConst = this.Static.Const;
			delete this.Static.Const;
			this.Const = simpleExtend(tempObj.Const, {});
			delete this.Const.Static;
			checkAvailability(tempObj, this.Static, this.staticConst, this.Abstract, this.Const);
			addTransient(this, tempObj);
			this.privateConstructor = !!tempObj["Private"] && tempObj["Private"][fn];
			deleteAddedProtoTypes(Class);
			var plugins = this.plugins, pp;
			//add plugin as extensin
			for(var p in plugins) {
				if(plugins.hasOwnProperty(p)) {
					pp = fm.isExist(plugins[p]);
					simpleExtend(pp.prototype.$get("Static"), this.Static);
					simpleExtend(pp.prototype.$get("staticConst"), this.staticConst);
				}
			}
			var temp = this.interfaces;
			if (temp) {
				for (k = 0, len = temp.length; k < len; k++) {
					createObj(temp[k]).prototype.$checkMAndGetF(pofn, info.methods, this.isAbstract, tempObj, this);
				}
			}
			temp = k = tempObj = info = Class = fn = undefined;
		}
function getReleventClassInfo( Class, fn, pofn ) {
			/// this is script
			addPrototypeBeforeCall(Class, this.isAbstract);
			var tempObj, k, len;
			tempObj = invoke(Class, this.args, pofn.base, this.ics, this.Package, pofn);
			tempObj.setMe && tempObj.setMe(pofn);
			tempObj.base = pofn.base;
			delete tempObj.setMe;
			this.shortHand = tempObj.shortHand || this.shortHand;

			var info = separeteMethodsAndFields(tempObj);
			this.methods = info.methods = pofn.base ? info.methods.concat(pofn.base.prototype.$get('methods')) : info.methods;
			if (this.isInterface) {
				pofn.base && simpleExtend(pofn.base.prototype.$get('fields'), info.fields);
				this.fields = info.fields;
				checkMandSetF(pofn);
				deleteAddedProtoTypes(Class);
				return this;
			}

			if (tempObj.init){
				tempObj.init();
			}

			this.isAbstract && checkForAbstractFields(tempObj.Abstract, this.Class);
			this.Static = simpleExtend(tempObj.Static, {});
			this.isAbstract && (this.Abstract = simpleExtend(tempObj.Abstract, {}));
			this.staticConst = this.Static.Const;
			delete this.Static.Const;
			this.Const = simpleExtend(tempObj.Const, {});
			delete this.Const.Static;
			checkAvailability(tempObj, this.Static, this.staticConst, this.Abstract, this.Const);
			addTransient(this, tempObj);
			this.privateConstructor = !!tempObj["Private"] && tempObj["Private"][fn];
			deleteAddedProtoTypes(Class);
			var plugins = this.plugins, pp;
			//add plugin as extensin
			for(var p in plugins) {
				if(plugins.hasOwnProperty(p)) {
					pp = fm.isExist(plugins[p]);
					simpleExtend(pp.prototype.$get("Static"), this.Static);
					simpleExtend(pp.prototype.$get("staticConst"), this.staticConst);
				}
			}
			var temp = this.interfaces;
			if (temp) {
				for (k = 0, len = temp.length; k < len; k++) {
					createObj(temp[k]).prototype.$checkMAndGetF(pofn, info.methods, this.isAbstract, tempObj, this);
				}
			}
			temp = k = tempObj = info = Class = fn = undefined;
		}
function getReleventClassInfo ( Class , fn , pofn ) { /// this is script addPrototypeBeforeCall ( Class , this . isAbstract ) ; var tempObj , k , len ; tempObj = invoke ( Class , this . args , pofn . base , this . ics , this . Package , pofn ) ; tempObj . setMe && tempObj . setMe ( pofn ) ; tempObj . base = pofn . base ; delete tempObj . setMe ; this . shortHand = tempObj . shortHand || this . shortHand ; var info = separeteMethodsAndFields ( tempObj ) ; this . methods = info . methods = pofn . base ? info . methods . concat ( pofn . base . prototype . $get ( 'methods' ) ) : info . methods ; if ( this . isInterface ) { pofn . base && simpleExtend ( pofn . base . prototype . $get ( 'fields' ) , info . fields ) ; this . fields = info . fields ; checkMandSetF ( pofn ) ; deleteAddedProtoTypes ( Class ) ; return this ; } if ( tempObj . init ) { tempObj . init ( ) ; } this . isAbstract && checkForAbstractFields ( tempObj . Abstract , this . Class ) ; this . Static = simpleExtend ( tempObj . Static , { } ) ; this . isAbstract && ( this . Abstract = simpleExtend ( tempObj . Abstract , { } ) ) ; this . staticConst = this . Static . Const ; delete this . Static . Const ; this . Const = simpleExtend ( tempObj . Const , { } ) ; delete this . Const . Static ; checkAvailability ( tempObj , this . Static , this . staticConst , this . Abstract , this . Const ) ; addTransient ( this , tempObj ) ; this . privateConstructor = ! ! tempObj [ "Private" ] && tempObj [ "Private" ] [ fn ] ; deleteAddedProtoTypes ( Class ) ; var plugins = this . plugins , pp ; //add plugin as extensin for ( var p in plugins ) { if ( plugins . hasOwnProperty ( p ) ) { pp = fm . isExist ( plugins [ p ] ) ; simpleExtend ( pp . prototype . $get ( "Static" ) , this . Static ) ; simpleExtend ( pp . prototype . $get ( "staticConst" ) , this . staticConst ) ; } } var temp = this . interfaces ; if ( temp ) { for ( k = 0 , len = temp . length ; k < len ; k ++ ) { createObj ( temp [ k ] ) . prototype . $checkMAndGetF ( pofn , info . methods , this . isAbstract , tempObj , this ) ; } } temp = k = tempObj = info = Class = fn = undefined ; }
Set relevent class information.
Set relevent class information .