JavaScriptのクローン作成についての簡単な説明

JavaScriptのクローン作成についての簡単な説明

1. 浅いクローニング

浅いクローンでは配列やオブジェクトをコピーできない

var obj = {
    名前:「腹筋」、
    年齢: '18'、
    性別:「男性」
}
var obj1 = {}
関数クローン(Origin,target) {
    target = target || {}; //ユーザーがターゲットを入力できないようにする
    for(var k in Origin){
        ターゲット[k] = 原点[k];
    }
}
クローン(obj,obj1);

2. ディープクローニング

まずそれがプリミティブ値なのか、配列なのか、それともオブジェクトなのかを判断し、それらを別々に処理します。

  • オブジェクトの反復処理
  • 元の値が直接copy
  • プリミティブ値ではないので、配列かオブジェクトかを判断する
  • 空の配列を作成するための配列です
  • 空のオブジェクトを作成するオブジェクトです
  • 確立されたら、元のオブジェクトまたは配列の内容を繰り返し処理します。
  • 再帰
var obj = {
    名前: 'lin'、
    年齢: '18'、
    性別:「男性」、
    カード: [1,2,3,4],
    妻 : {
        名前: 'bcsds',
        息子:{
            名前: 'aaa'
        },
        年齢: '23'
    }
}
var obj1 = {}
//元の値とオブジェクト配列型の戻り値は異なります function deepClone(origin,target) {
    ターゲット = ターゲット || {};
    for(var k in origin) {
        もしorigin.hasOwnProperty(k)が存在すれば
            if(typeof(origin[k]) == 'オブジェクト') {
                if(Object.prototype.toString.call(origin[k]) == '[オブジェクト配列]') {
                    ターゲット[k] = [];
                }それ以外 {
                    ターゲット[k] = {};
                }
                deepClone(origin[k],target[k]);
            }それ以外 {
                ターゲット[k] = 原点[k];
            }
        }
    }
}
ディープクローン(obj,obj1);
以下もご興味があるかもしれません:
  • JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの原則の詳細な説明
  • JavaScriptのシャロークローニングとディープクローニングの例の詳細
  • JavaScript のシャロークローニング、ディープクローニングの比較とサンプル分析
  • JSオブジェクトのディープクローン化方法の例
  • JSオブジェクトのディープクローニング例の分析
  • JS 拡張クラス、クローンオブジェクト、混合クラスインスタンスの分析
  • JS クローン、属性、配列、オブジェクト、関数インスタンスの分析
  • JavaScript ディープクローンオブジェクトの詳細な説明と例
  • JavaScript配列のクローンの簡単な実装方法
  • js でオブジェクトと配列を複製する一般的な方法の紹介

<<:  MySQL で sum 関数を使用する例のチュートリアル

>>:  Dockerのネットワークモードと設定方法

推薦する

Linux でパスワードの有効期限を表示および設定する方法

適切な設定を行うことで、Linux ユーザーにパスワードを定期的に変更させることができます。パスワー...

6つのレイアウトでのFrameLayoutの使用

序文前回はLinearLayoutについて説明しました。今回はFrameLayoutの使い方を説明し...

W3C 検証に合格するにはどうすればいいですか?

W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...

CSSは座席選択効果を実現するためにautoflow属性を使用する

1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...

フレックスレイアウトを使用してページレイアウトを簡単に実装するためのサンプルコード

では、早速コードを見てみましょう。 1. 上部、中央、下部のレイアウト: <!DOCTYPE ...

Zookeeper 不正アクセス テストの問題

目次序文Zookeeper サービスのオープンを検出情報を入手する接続テスト接続先修理計画参照する序...

MACOS で MySQL ルートパスワードを忘れた場合の解決策

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

Linux システムに Spring Boot アプリケーションをインストールするための詳細なチュートリアル

Unix/Linux サービスsystemd サービス操作プロセス1. JDKがインストールされたC...

Vue.jsの機能コンポーネントに関する包括的な理解

目次序文React 関数コンポーネントVue (2.x) の機能コンポーネント🌰 例: el-tab...

HTML テーブル マークアップ チュートリアル (10): セル パディング属性 CELLPADDING

セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...

Linuxにおけるselinuxの基本設定チュートリアルの詳細な説明

selinux ( Security-Enhanced Linux)は、Linux カーネル モジュ...

Dockerを使用してGitlabを素早くデプロイする方法

1. GitLabイメージをダウンロードする docker pull gitlab/gitlab-c...

Webデザイナーの成長体験

<br />まず最初に、私はこのグループの中では完全な新人だということを述べなければなり...

MySQL Workbenchのダウンロードと使用方法のチュートリアルの詳細な説明

1. MySQL WorkbenchをダウンロードするWorkbench は、MySQL のグラフィ...

Ubuntu の Python で C/C++ メソッドを呼び出すダイナミック リンク ライブラリの詳細な説明

ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...