ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript オブジェクトのディープコピー

JavaScript オブジェクトのディープコピー

PHPz
リリース: 2017-04-04 10:18:43
オリジナル
1101 人が閲覧しました

jsデータ型は、大きく2つのカテゴリに分類できます:

  • 値型(元の型):
    たとえば、StringとNumber型はすべて値型です。

  • ReferenceType:
    たとえば、ObjectArrayは参照タイプです。

2 つの違いについて簡単に説明しましょう:
最も明らかな違いは割り当てです。値型の割り当ては、新しい 変数 に割り当てられる実際の copy コピーです:

var a, b = "issax";
a = b;
a +="_coder";
console.log(a);  //issax_coder
console.log(b);  //issax
ログイン後にコピー

上の例を見てください。b を a に割り当てた後、2 つの変数 a と b は互いに独立しており、値自体が変更されます。互いに影響を与えない、値型です。

次に、参照型を見てください:

var obj_i, obj_ii = { name: 'issax' };
obj_i = obj_ii;
obj_i['career'] = 'coder';
console.log(obj_i);  //Object {name: "issax", career: "coder"}
console.log(obj_ii);  //Object {name: "issax", career: "coder"}
ログイン後にコピー

ほら、obj_ii の値を obj_i に代入した後、obj_i の内容を変更すると、obi_ii の内容も変更されます。これが参照型です。参照型変数ストレージはコンテンツそのものではなく、コンテンツへのポインタです。はい、値を割り当てるときは、実際にはこのポインタを新しい変数に割り当てるだけです。なぜ上記の状況は同じではないのですか。言うまでもなく同じですか?

周草、私は何のことを話しているのですか? 私はオブジェクト[顔のカバー]の深いコピーについて話しています。上の例を読んだ後、あなたはおそらくそれを理解できるでしょう。浅いコピーと深いコピーとは何ですか? 値型の通常の割り当てプロセスは深いコピーですが、参照型の割り当ては浅いコピーです。

オブジェクトは参照型であるため、通常の割り当てプロセスは浅いコピーですが、場合によっては、オブジェクトを深くコピーする必要もあります。これは GUI について何と言ったでしょうか。

たとえば、2 日前に Vue で作業していたときに、奇数回クリックすると項目が並べ替えられ、偶数回クリックすると

update

time による元の並べ替えが復元されるという要件に遭遇しました。 。これは簡単ではありません。毎回

並べ替えするだけです。これを行うのは本当に愚かなことです。最初の並べ替え以外は意味がありますが、2 番目、3 番目、4 番目、5 番目、6 番目、7 番目... それらはすべて繰り返されています。毎回並べ替えるのはパフォーマンスの無駄ですか?次に、ソートされたオブジェクトを保存します...それでは、gg です。オブジェクトは参照型です。最初に直接割り当てました。その後、シーンは非常に恥ずかしく、データはまったく移動しませんでした [顔覆い] ];必要に応じて
属性は

再帰的に

1 つずつコピーされますか?次に、私のオブジェクトはこれに似ています:

Paste_Image.pngJavaScript オブジェクトのディープコピー
本当に再帰的なコピーはsbです。幸いなことに、これは参照をディープコピーします。 [エクスタシー]

Xiao Er、コードをアップロードしてください:


Paste_Image.png

以上がJavaScript オブジェクトのディープコピーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート