シャロークローニングとディープクローニングとは何ですか?浅いクローン: スタックに格納されている値を対応する変数に直接割り当てます。基本データ型の場合は、対応する値が直接割り当てられます。参照型の場合は、アドレスが割り当てられます。 1. アレイのクローンを作成する1.1 浅いクローニングfor ループを使用して浅いクローンを作成します。 var arr1 = ['デモ', 1, 2]; var arr2 = []; // 配列の浅いクローン for (var i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; } コンソールログ(arr2); コンソールにログ出力します。 出力:
1.2 ディープクローニングディープクローニングには再帰を使用します。 関数 deepClone(o) { var 結果 = []; (var i = 0; i < o.length; i++) の場合 { 結果.push(deepClone(o[i])); } 結果を返します。 } 2. 配列以外のオブジェクトの複製2.1 浅いクローニングfor ループを使用して浅いクローンを作成します。 var obj1 = { a: 1, b: 2, c: 3, d: [4, 5, { e: 'デモ' }] }; var obj2 = {}; // オブジェクトの浅いクローン for (var i in obj1) { obj2[i] = obj1[i]; } コンソールログ(obj2); コンソールにログ出力します。(obj1 == obj2); 出力:
2.2 ディープクローニングディープクローニングには再帰を使用します。 関数 deepClone(o) { var 結果 = {}; (変数 i が o の場合) { 結果[i] = deepClone(o[i]); } 結果を返します。 } 3. ディープクローン機能を統合var obj1 = { a: 1, b: 2, c: 3, d: [4, 5, { e: 'デモ' }] }; var arr1 = ['デモ', 1, 2]; // ディープクローン関数 deepClone(o) { Array.isArray(o) の場合 { // は配列です var result = []; (var i = 0; i < o.length; i++) の場合 { 結果.push(deepClone(o[i])); } } そうでない場合 (typeof o == 'object') { // 配列ではなくオブジェクトです var result = {}; (変数 i が o の場合) { 結果[i] = deepClone(o[i]); } } それ以外 { // 基本型の値 var result = o; } 結果を返します。 } コンソールにログ出力します。 コンソールにログ出力します。 これで、JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの詳細な原則に関するこの記事は終了です。JavaScript 配列に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Centos8.2 クラウド サーバー環境に Tomcat8.5 をインストールするための詳細なチュートリアル
mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...
目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...
目次序文1. wgetを使用して単一のファイルをダウンロードする2. wget -Oを使用してダウン...
目次序文RMの後には希望はあるのでしょうか?最前線を使ってファイルを取得するextundeleteを...
<br />Web ページに音楽を挿入する場合、サフィックスに応じて異なるコードを記述す...
目次1. 問題の説明2. 問題解決1. 仮想マシンシステムのインストール時にネットワークがない場合2...
職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...
ここでは、主に小さなプログラムの開発プロセスでよく使われる、非常に実用的な機能ポイントをいくつか整理...
1. メニューバーで「編集」→「仮想ネットワーク エディター」を選択して仮想ネットワーク エディタ...
1. コンポーネントの実装方法:組件名稱首字母必須大寫1. JS関数を通じてコンポーネントを実装...
プロジェクト ページの作成中に、子要素が親要素の透明度を継承するという問題に遭遇しました。多くのドキ...
Linux では、cat、more、less の各コマンドを使用してファイルの内容を表示できます。c...
この記事は主に、nginx を介して方向プロキシを実装するプロセスを紹介します。この記事のサンプル ...
Docker インストール (Alibaba Cloud Server) Docker 公式 Ce...
MySQL のトランザクションはデフォルトで自動的にコミットされます (autocommit = 1...