'Super' : function( var_args ){\r
var sClass = this,\r
i = X_Class_CALLING_SUPER.indexOf( sClass ),\r
- n = -1,\r
l, sList, def, sConst, ret;\r
\r
if( i === -1 ){\r
X_Class_CALLING_SUPER[ l = X_Class_CALLING_SUPER.length ] = sClass;\r
X_Class_CALL_SUPER_STACK[ l ] = sList = [];\r
+ def = X_Class_getClassDef( sClass );\r
+ if( !def.Constructor ) sClass = def.SuperClass;// 現在のクラスがコンストラクタを持たない場合 SuperConstructor を new で呼んでいるため再び呼ばないようにする\r
} else {\r
sList = X_Class_CALL_SUPER_STACK[ i ];\r
};\r
def = X_Class_getClassDef( sClass );\r
sClass = def.SuperClass;\r
sConst = def.SuperConstructor;\r
- if( sConst && sList[ ++n ] !== sConst ){\r
- sList[ n ] = sConst;\r
+ if( !sConst ) break;\r
+ if( sList.indexOf( sConst ) === -1 ){\r
+ sList[ sList.length ] = sConst;\r
ret = sConst.apply( this, arguments );\r
--sList.length;\r
if( !sList.length ){\r
// --- interface ----------------------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
\r
-/*\r
+/**\r
* @enum {number}\r
* @const\r
*/\r
klass[ 'name' ] = displayName;\r
\r
if( opt_abstract ){\r
- classDef.Abstract = true;\r
+ classDef.isAbstract = true;\r
} else\r
if( opt_pool ){\r
classDef.pool = [];\r
def = f.classDef,\r
instance, obj;\r
\r
- if( def.Abstract ){\r
+ if( def.isAbstract ){\r
X.Logger.critical( 'AbstractClass!' );\r
return;\r
};\r