- // TODO \r
- while( sClass ){\r
- sFunc = sClass.prototype[ name ];\r
- \r
- if( !hit && sFunc === myFunc ){\r
- hit = true; // 現在の関数にヒット, さらにスーパークラスを辿って同名のプロパティの関数が現れたらそれが目指すもの\r
- } else\r
- if( hit && sFunc !== myFunc /* X_Object_own( name, sClass.prototype ) */ ){\r
- // this の関数と異なり、値が設定されていたら、今は手を抜いて undef か?見ている、正しくは hasOwnProperty\r
- if( X_Type_isFunction( sFunc ) ){\r
- stack[ stack.length ] = sFunc;\r
- switch( args.length ){\r
- case 0 :\r
- ret = sFunc.call( me );\r
- break;\r
- case 1 :\r
- ret = sFunc.call( me, args[ 0 ] );\r
- break;\r
- case 2 :\r
- ret = sFunc.call( me, args[ 0 ], args[ 1 ] );\r
- break;\r
- case 3 :\r
- ret = sFunc.call( me, args[ 0 ], args[ 1 ], args[ 2 ] );\r
- break;\r
- default :\r
- args = X_Array_copy( args );\r
- args.shift();\r
- ret = sFunc.apply( me, args );\r
- break; \r
+ while( sClass ){\r
+ ++t;\r
+ sClass = X_Class_getClassDef( sClass ).SuperClass; \r
+ sFunc = sClass.prototype[ name ];\r
+ \r
+ if( sFunc !== myFunc /* X_Object_own( name, sClass.prototype ) */ ){\r
+ if( X_Type_isFunction( sFunc ) ){\r
+ X_Class_SUPER_STACKS[ i ] += t;\r
+ switch( args.length ){\r
+ case 1 :\r
+ ret = sFunc.call( me );\r
+ break;\r
+ case 2 :\r
+ ret = sFunc.call( me, args[ 1 ] );\r
+ break;\r
+ case 3 :\r
+ ret = sFunc.call( me, args[ 1 ], args[ 2 ] );\r
+ break;\r
+ case 4 :\r
+ ret = sFunc.call( me, args[ 1 ], args[ 2 ], args[ 3 ] );\r
+ break;\r
+ default :\r
+ args = X_Array_copy( args );\r
+ args.shift();\r
+ ret = sFunc.apply( me, args );\r
+ break; \r
+ };\r