if( listeners && !listeners[ X_LISTENERS_KILL_RESERVED ] && listeners[ X_EVENT_BEFORE_KILL_INSTANCE ] ){\r
X_Class_SEAL_KILLING[ X_Class_SEAL_KILLING.length ] = this;\r
\r
- if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_Callback_PREVENT_DEFAULT ){\r
+ if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_CALLBACK_PREVENT_DEFAULT ){\r
this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE_CANCELED );\r
// BEFORE_KILL_INSTANCE, KILL_INSTANCE_CANCELED 内で kill() しても PREVENT_DEFAULT の場合はこれを無視する。\r
flag = true;\r
X_EventDispatcher_unlistenAll( this );\r
};\r
\r
+ if( this[ 'instanceOf' ]( Node ) ){\r
+ // console.log( 'KILL : ' + this.call( 'outerHTML' ) );\r
+ X_Node_onKill( this );\r
+ };\r
+\r
timers = X_EventDispatcher_LAZY_TIMERS;\r
\r
// asyncDispatch の削除\r
'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
case 4 :\r
return sFunc.call( this, args[ 1 ], args[ 2 ], args[ 3 ] );\r
default :\r
- args = X_Object_cloneArray( args );\r
+ args = X_Array_copy( args );\r
args.shift();\r
return sFunc.apply( this, args );\r
};\r
* );\r
*/\r
function X_Class_create( /* displayName, classSetting, privateClass, props */ ){\r
- var args = X_Object_cloneArray( arguments ),\r
+ var args = X_Array_copy( arguments ),\r
displayName = args[ 0 ],\r
classSetting,\r
opt_pool, opt_abstract, opt_final,\r
classDef.Constructor = props[ 'Constructor' ];\r
};\r
\r
- klass = X_Callback_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
+ klass = X_Closure_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
cbHash.klass = klass;\r
klass[ 'superClassOf' ] = X_Class_superClassOf;\r
klass[ 'subClassOf' ] = X_Class_subClassOf;\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
* @example var SubClass = SuperClass.inherits( 'Sub', X_Class.FINAL, { ... } );\r
* @param {string} [displayName] クラスの名前\r
* @param {number} [classSetting=0] X_Class.POOL_OBJECT | X_Class.FINAL など\r
- * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
* @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
* @return {__ClassBase__}\r
*/\r
-function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
- var args = X_Object_cloneArray( arguments ),\r
+function X_Class_inherits( /* displayName, classSetting, props */ ){\r
+ var args = X_Array_copy( arguments ),\r
params = [],\r
Super = this,\r
superDef = X_Class_getClassDef( Super ),\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