2012-02-04 12 views
0

これはオブジェクトを再帰的に複製するための正常なクローン機能ですか?これはOKクローン機能ですか?

function clone(o) 
{ 
    function CloneObject(inObj) 
    { 
     for (i in inObj) 
     { 
      if(typeof inObj[i] == 'object') 
       this[i] = clone(inObj[i]); 
      else 
       this[i] = inObj[i]; 
     } 
    } 

    return new CloneObject(o); 
} 

また、これは配列では機能しません。アレイをどのようにクローンできますか?

+0

そのトピックにはたくさんのスレッドがあります:http://stackoverflow.com/search?q=[javascript]+clone+object –

答えて

1

確かにオブジェクトを完全にクローンしません—クローンは元のプロトタイプを持たず、異なるコンストラクタを持ちます。オリジナルに反復可能でないプロパティがあれば、コピーしません—しかし、それは "大丈夫"と尋ねると、その答えは "はい"となるかもしれません:もしそれがあなたがする必要があるものなら、それは絶対にうまくいきます。

アレイをクローニングする場合— inObj.constructor == Arrayをチェックできます。

+0

実際には、私はここでより良い解決策を見つけました:http://my.opera.com /GreyWyvern/blog/show.dml/1725165 – LordZardeck