シャローこぴー、ディープコピーという言葉が使われていたので調べていたのですが、この記事を読みました。
シャローコピーとはつまり、参照の値私のことで、ディープコピーは完全な複製を作ることをいうという理解であっていますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
いえ、そのブログの下の方にも
shallow_copyではなく参照の値渡しです 両者の挙動は違います
と明記してあります。
シャローコピーは、1段だけコピーすることです。「配列そのもの」はコピーされるので別オブジェクトとなりますが、「配列の要素」はそのまま同じオブジェクトが使われます。
javascript
1var a = [{foo: 3}]; 2 3// JavaScriptでは、オブジェクトの===での比較は、 4// 「同じオブジェクト」の場合だけtrueとなることに注意 5 6// 単なる変数のコピー 7var simple_copied = a; 8console.log(simple_copied === a); // true 9 10// シャローコピー 11var shallow_copied = a.slice(); 12console.log(shallow_copied === a); // false 13console.log(shallow_copied[0] === a[0]); // true 14 15// ディープコピー 16var deep_copied = JSON.parse(JSON.stringify(a)); 17console.log(deep_copied === a); // false 18console.log(deep_copied[0] === a[0]); // false 19
投稿2017/10/01 22:38
総合スコア145930
0
シャローコピーとは参照を複製すること。
ディープコピーとはデータそのものを複製すること。です。
投稿2017/10/02 12:27
編集2017/10/02 12:51総合スコア200
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
シャローコピーは参照の参照渡し
2017/10/03 13:49
質問文での表現にあわせてわかりやすく教えていただきありがとうございます。maisumakunさんのコメントより「このような場合には値渡し, 参照渡しという用語を使うべきではない」ということがわかり、無事シャローコピー、ディープコピーとは何かについて理解できたと感じています。
2017/10/03 14:25 編集
いや代入でも使いますよ。あと1段だけコピーすること=シャローコピーではありません。
値渡し/参照渡しはこちらが参考になると思います。
https://qiita.com/irxground/items/5b37a1643fb521cf057b
2017/10/04 07:06
この質問への回答で新しい疑問が湧いたのですが、あまりコメント欄が長くなってしまうと後から見るときに読みづらくなってしまうと思い新たに質問をさせていただきました。もしよろしければご回答よろしくお願いします。
新たに投稿した質問: シャローコピーについて( https://teratail.com/questions/94942 )
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/02 10:22
2017/10/03 13:27
2017/10/03 13:46
2017/10/04 07:35 編集