配列などを操作する際にcloneメソッドを使うことがありますが、これを使わずに直接値を代入しても良いような気がするのですが、そうするメリットは何でしょうか?メモリを節約するには?浅いコピペ、深いコピペなどもありますが、初心者なのでご容赦ください。 。
typecho2017-06-26 10:54:02
利点は、「=」とは異なり、クローン配列がメモリ内で独立しており、それを使って何でもできることです。
js では、配列とオブジェクトは参照型です。
リーリー リーリーつまり、クローン作成の目的は、元のデータを汚さずにデータの新しいコピーを生成することです。
ディープコピーとシャローコピーについて:
リーリーご覧のとおり、浅いコピーと深いコピーの違いは、浅いコピーは obj1 の最初の層のみを走査し、obj1 の各属性を obj2 に割り当てますが、属性値がオブジェクト At である場合、深いコピーはそうでないことです。今回は、ディープ コピーは新しい空のオブジェクトを作成し、そのオブジェクトの値を空のオブジェクトに割り当て、その空のオブジェクトを obj3 の属性として返します。
给我你的怀抱2017-06-26 10:54:02
JS プログラミングにおける非常に重要な原則は、「自分のものではないオブジェクトには触れない」です
鮮やかなたとえを言うと、私はあなたに本(物体)を貸しました、そしてあなたはそれを読みたいだけだと思っていましたが、あなたはそれを習字の練習(書くこと)に使ったとき、私はその本を読むことさえできません。通常の内容を返してください。
deepClone はこの問題を解決します。私があなたに本を渡し、あなたはそれをコピーし、その本をそのまま私に返し、あなたはそのコピーを自由に処分できます。