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のネットワークモードと設定方法

推薦する

ウェブデザインと制作に関する科学的原則と提案の要約

<br />ネットワーク設計の分野では、アイトラッキングに関する研究が非常に盛んに行われ...

DockerコンテナにPythonアプリケーションをデプロイするプロセスの分析

シンプルなアプリケーションの展開1. ディレクトリ構造: └── Pythonpro #ディレクトリ...

Mysql で期間の交差をクエリする方法

MySQLクエリ期間の交差使用シナリオデータベース テーブルには、starttime と endti...

静的リソースファイルのアクセスログをフィルタリングするNginxの実装

乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...

HTML の ReadOnly と Enabled の違い

ReadOnly 属性を持つ TextBox は、クライアント上で次のマークアップとして表示されます...

Dockerで同じIDを持つ2つのイメージを削除する

今日 Docker コンテナを作成したとき、誤ってイメージの名前を間違って入力しました。その結果、コ...

ES6 における Object.assign() の使い方の詳細な説明

目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...

CentOS 7.6 への MySQL 5.7 GA バージョンのインストール チュートリアル図

目次環境の準備環境の準備mariadbをアンインストールする rpm -qa | grep mari...

Vueはショッピングカート決済機能をシミュレートします

この記事では、ショッピングカート決済機能を実現するためのVueの具体的なコードを例として紹介します。...

Linuxのファイルとフォルダの権限を操作する方法

Linux のファイル権限まず、現在のディレクトリ内のファイルの内容を確認しましょう。 ls -l ...

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

イメージの起動時にdocker runまたはdocker restartが自動的に終了する問題を解決します

コマンドを実行します: docker run --name centos8 -d centos /b...

CSS マルチカラムレイアウトソリューション

1. 固定幅+適応型期待される効果: 左側は固定幅、右側は適応幅 共通コード: html: <...

Linux Centos でスクリプトを使用して Docker をインストールする方法

Dockerの主な機能は何ですか?現在、Docker には少なくとも次のアプリケーション シナリオが...

MySQL PXC クラスターの構築方法

目次1. PXCの紹介1.1 PXC の紹介1.2 PXC の特徴と利点1.3 PXCの限界と欠点1...