CONSTRUCTOR = 'Constructor',\r
killPrivateFlag = false,\r
traits = null,\r
- _slice = Array.prototype.slice;\r
+ use__proto__ = !!X.emptyFunction.prototype.__proto__;\r
\r
/* サブクラスを作るメソッド \r
* var subClass = superClass.inherits( ... ) \r
params.push( args[ 0 ] ); /* props サブクラスでは未定義でも可 */\r
\r
// 継承クラスの作成\r
- Super.__new = null;\r
- traits = new Super();\r
- Super.__new = C;\r
+ if( use__proto__ ){\r
+ traits = Super.prototype;\r
+ } else {\r
+ Super.__new = null;\r
+ traits = new Super();\r
+ Super.__new = C; \r
+ };\r
klass = X.Class.create.apply( X.Class, params );\r
traits = null;\r
\r
klass.superClassOf = X.Class._superClassOf;\r
klass.subClassOf = X.Class._subClassOf;\r
\r
- if( X.UA.Safari && X.UA.Safari < 3 ){ // TODO Gecko もこちらへ\r
- X.Class._override( X.Class._override( traits || klass.prototype, props, true ), CommonProps, false );\r
- if( traits ) klass.prototype.__proto__ = traits;\r
+ if( use__proto__ ){\r
+ X.Class._override( klass.prototype, props, true );\r
+ if( traits ){\r
+ klass.prototype.__proto__ = traits;\r
+ } else {\r
+ X.Class._override( klass.prototype, CommonProps, false );\r
+ };\r
+ //if( X.UA.Safari && X.UA.Safari < 3 ){ // TODO Gecko もこちらへ\r
+ // X.Class._override( X.Class._override( traits || klass.prototype, props, true ), CommonProps, false );\r
+ // if( traits ) klass.prototype.__proto__ = traits;\r
} else {\r
klass.prototype = X.Class._override( X.Class._override( traits || klass.prototype, props, true ), CommonProps, false );\r
klass.prototype.constructor = klass;\r