OSDN Git Service

Version 0.6.176, add X.Script.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 13_XClass.js
index 6cf56b8..bb0a857 100644 (file)
@@ -130,12 +130,13 @@ X_Class_CommonMethods =
        '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
@@ -144,8 +145,9 @@ X_Class_CommonMethods =
                        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
@@ -236,7 +238,7 @@ X_Class_CommonMethods =
 // --- interface ----------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 \r
-/*\r
+/**\r
  * @enum {number}\r
  * @const\r
  */\r
@@ -406,7 +408,7 @@ X[ 'Class' ] = /** @lends X.Class */ {
                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
@@ -569,7 +571,7 @@ function X_Class_actualConstructor( f, args ){
                def      = f.classDef,\r
                instance, obj;\r
 \r
-       if( def.Abstract ){\r
+       if( def.isAbstract ){\r
                X.Logger.critical( 'AbstractClass!' );\r
                return;\r
        };\r