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

推薦する

JavaScriptは文字の出現回数をカウントします

この記事の例では、文字の出現回数をカウントするJavaScriptの具体的なコードを参考までに共有し...

HTMLプログラミングタグとドキュメント構造の詳細な説明

HTML を使用してコンテンツをマークアップする目的は、Web ページにセマンティクスを与えることで...

Web ページは何ピクセルで設計すればよいでしょうか?

多くのウェブデザイナーは、ウェブページのレイアウトを設計する際に、インターフェースウェブページの幅に...

Javascript DOM、ノード、要素取得の紹介

目次DOMノード要素ノード:テキストノード:プロパティ ノード:要素を取得getElementByI...

Zabbix で監視項目と集約されたグラフを設定するためのサンプルコード

1. ローカルマシンを監視するためにZabbixエージェントをインストールするエージェントソフトウェ...

HTMLページにビデオを挿入する方法の概要

ページでビデオ タグを使用する場合は、Ogg Theora または VP8 (これに問題がない場合)...

Ubuntu 18.04 に phpMyAdmin をインストールするための詳細なチュートリアル

Ubuntu 18.04 上の Apache で動作するように phpMyAdmin をインストール...

MySQL NULLデータ変換方法(必読)

MySQL を使用してデータベースをクエリし、左結合を実行すると、関連付けられたフィールドの一部に...

RGBAアルファ透明度変換計算表

IEでのRGBAとフィルター値の変換RGBA 透明度値IE フィルター値0.1 19 0.2 33 ...

Windows 10 で MySQL の解凍バージョンをインストールする方法の詳細なグラフィック チュートリアル

MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...

IE で UTF8 エンコードされたページで行が理由もなく空白のままになり、UTF8 ページが表示されない問題の解決方法

理由は、すべてのファイルが utf8 でエンコードされているためです。ファイルがインクルードされると...

MySQL 5.7.18 winx64 のインストールと設定方法のグラフィックチュートリアル

圧縮パッケージのインストールは、mysql-5.7 以降、大幅に変更されました。この記事では、mys...

SQL文のANDとORの実行順序で発生する問題

質問昨日、データベースSQLを書いているときに問題が発生しました。問題の根本は、SQL ステートメン...

純粋なCSSを使用してスクロールシャドウ効果を実現します

端的に言うと、スクロール可能な要素には非常によくある状況があります。通常、スクロールすると、要素が現...

MySQL でテーブル データを削除した後もディスク領域がまだ占有されているのはなぜですか?

目次1.MySQLデータ構造2. テーブルファイルのサイズは変更されておらず、MySQLの設計に関連...