OSDN Git Service

Version 0.6.57, fixed NS of X.UI & X.Class for __proto__.
[pettanr/clientJs.git] / 0.6.x / js / core / 04_XClass.js
index 5d219b3..040b39d 100644 (file)
@@ -17,7 +17,7 @@ X.Class = ( function(){
                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
@@ -63,9 +63,13 @@ X.Class = ( function(){
                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
@@ -243,9 +247,16 @@ X.Class = ( function(){
                        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