OSDN Git Service

Version 0.6.156, add X.UI.Repeater.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 04_XObject.js
index 01a0447..6d9941a 100644 (file)
@@ -51,14 +51,16 @@ X[ 'Object' ] = {
 // --- implements ---------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
 /**\r
- * 単純なクローンでメンバーをコピーしたオブジェクトを返します。\r
+ * 単純なクローンでメンバーをコピーしたオブジェクトを返します。 k in null でエラーになる Opera7- に対策済。\r
  * @alias X.Object.clone\r
  * @param {object|Array} src コピー元のオブジェクトです。\r
  * @return {object|Array}\r
  */\r
 function X_Object_clone( src ){\r
        var ret, k;\r
-       if( typeof src !== 'object' ) return src;\r
+       \r
+       if( !src || !X_Type_isObject( src ) ) return src;\r
+       \r
        ret = {};\r
        for( k in src ){\r
                //if( X_EMPTY_OBJECT[ k ] ) continue;\r
@@ -76,7 +78,7 @@ function X_Object_clone( src ){
  */\r
 function X_Object_override( target, src ){\r
        var k;\r
-       if( !X_Type_isObject( src ) ) return target;\r
+       if( !src || !X_Type_isObject( src ) ) return target;\r
        for( k in src ){\r
                //if( X_EMPTY_OBJECT[ k ] ) continue;\r
                target[ k ] = src[ k ];\r
@@ -97,6 +99,7 @@ function X_Object_deepCopy( src ){
 \r
 function X_Object_deepCopy_( src, objSrc, objCopy, n ) {\r
        var ret, i, k;\r
+       \r
        if( !src ){ // 0, "", null, undefined, NaN, false\r
                return src;\r
        } else\r
@@ -131,6 +134,7 @@ function X_Object_deepCopy_( src, objSrc, objCopy, n ) {
 function X_Object_cloneArray( ary ){\r
        var ret = [],\r
                i = ary.length;\r
+\r
        if( !i ) return ret;\r
        for( ; i; ){\r
                ret[ --i ] = ary[ i ];\r
@@ -139,15 +143,15 @@ function X_Object_cloneArray( ary ){
 };\r
 \r
 /**\r
- * object が空か?調べます。\r
+ * object が空か?調べます。 object でない場合、undefined が返る\r
  * @alias X.Object.isEmpty\r
  * @param {object} v \r
- * @return {boolean}\r
+ * @return {boolean|undefined}\r
  */\r
 function X_Object_isEmpty( v ){\r
-       var k;\r
-       for( k in v ){\r
-               //if( X_EMPTY_OBJECT[ k ] ) continue;\r
+       if( !v ) return;\r
+       for( var k in v ){\r
+               //if( X_EMPTY_OBJECT[ _k ] ) continue;\r
                return false;//if( v.hasOwnProperty && v.hasOwnProperty( p ) ) return false; ie4 で動かない、、、\r
        };\r
        return true;\r