// --- 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
*/\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
\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
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
};\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