OSDN Git Service

Version 0.6.22, remove throw from X.UI.*.
[pettanr/clientJs.git] / 0.6.x / js / core / 04_XClass.js
index e67fd27..ac2c1a6 100644 (file)
@@ -21,7 +21,7 @@ X.Class = ( function(){
                \r
        function copyArray( list ){\r
        //return _slice.call( list, 0 );\r
-       var i = list.length, ret = new Array( i );\r
+       var i = list.length, ret = [];\r
        for( ; i; ){\r
                ret[ --i ] = list[ i ];\r
        };\r
@@ -90,7 +90,11 @@ X.Class = ( function(){
                                return;\r
                        };\r
                        killPrivateFlag = false; // onKill 内で PrivateInstance.kill() を防ぐため\r
-                       X.Type.isFunction( instance.onKill ) === true && instance.onKill();\r
+                       // onKill() === false の場合、kill のキャンセル\r
+                       // private      は false での キャンセル は無視される\r
+                       if( X.Type.isFunction( instance.onKill ) && instance.onKill() === false && !def.isPrivate ){\r
+                               return;\r
+                       };\r
                        for( p in instance ){\r
                                if( instance.hasOwnProperty && !instance.hasOwnProperty( p ) ) continue;\r
                                delete instance[ p ];\r
@@ -109,8 +113,6 @@ X.Class = ( function(){
                                        def.userList.splice( i, 1 );\r
                                };\r
                        };\r
-                       // myCallback の削除\r
-                       // myCallback を受け取った API への通知\r
                },\r
                instanceOf : function( klass ){\r
                        var Super = this;\r
@@ -154,6 +156,7 @@ X.Class = ( function(){
                        def.live && def.live.push( instance );\r
                };\r
                if( def.Super ){\r
+                       // klass.prototype に移動\r
                        instance.Super = def.SuperProto;\r
                        instance.SuperConstructor = superConstructor;\r
                };\r
@@ -162,7 +165,8 @@ X.Class = ( function(){
        };\r
        \r
        function superConstructor(){\r
-               X.Class._getClassDef( this ).SuperConstructor.apply( this, arguments );\r
+               var s = X.Class._getClassDef( this ).SuperConstructor;\r
+               s && s.apply( this, arguments );\r
        };\r
        \r
        return {\r
@@ -215,7 +219,7 @@ X.Class = ( function(){
                                return;\r
                        };\r
                        \r
-                       if( X.Type.isFunction( props[ CONSTRUCTOR ] ) === true ){\r
+                       if( props[ CONSTRUCTOR ] && X.Type.isFunction( props[ CONSTRUCTOR ] ) === true ){\r
                                classDef[ CONSTRUCTOR ] = props[ CONSTRUCTOR ];\r
                        };\r
                        \r