javascript - オブジェクトコードの再帰的コピーに関する質問
淡淡烟草味
淡淡烟草味 2017-05-19 10:25:31
0
2
513
リーリー
淡淡烟草味
淡淡烟草味

全員に返信(2)
黄舟
  1. 現在のobjがオブジェクトであるか配列であるかを判断します。配列の場合、結果も配列になります。それ以外の場合、結果は通常のオブジェクトになります

  2. あなたの理解は間違っています、この文は如果 obj 存在,并且是对象

  3. を意味します
  4. 参照型(オブジェクト)でない場合は、現在のキーの値が基本型であることを意味し、新しい結果に対応するキーをこの値に直接設定します

ちなみに、オブジェクトをディープコピーするとメモリリークが発生する可能性があるためです。キーは型を参照する可能性があり、それによってそれ自体が内部的に参照され、メモリ リークが発生するため、ディープ コピーは参照型キーに遭遇した場合にのみヒープ メモリのアドレスをコピーします。

そして、質問の最初の行では、splice を判断することによって、それが配列であるかオブジェクトであるかを判断するのは厳密ではありません。Array.isArray であるオブジェクトの下に splice と呼ばれるプロパティがある場合はどうなるでしょうか。このメソッドは適切にサポートされており、これに置き換えることができます。

ES6 の場合は、Object.assign()だけ

いいねを押す +0
漂亮男人
  1. obj がオブジェクトであるか配列であるかを判断します。配列のみが splice メソッドを持っているためです。obj.splice が obj が配列であることを示す戻り値を持つ場合、結果も配列になります。それ以外の場合、結果はオブジェクトになります。

  2. if (obj が存在し、obj がオブジェクトである)、null typeof もオブジェクトなので、もう 1 つの判断ステップで null を削除できます。

  3. コピーされた値が private值,那么就直接赋值就可以,如果是对象,那么就像上一步一样递归的复制对象,直到复制的值是private 値の場合。

浅いコピーと深いコピーについて言えば、恥ずかしながら私が書いた記事を読むことをお勧めします...
/a/11...

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート