1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...)a. 複数オブジェクトのレプリケーションをサポート b. ソース属性とターゲット属性が同じ場合、ソースはターゲット属性をコピーします。 c. ターゲットはObjectオブジェクトのみ var obj = {a:1,b:2} 未定義 オブジェクトに代入します({c:3},obj) {c: 3、a: 1、b: 2} オブジェクト {a: 1、b: 2} 互換性の記述 if (Object.assign) {//compatible} else {//incompatible} 2. スプレッド演算子複数のオブジェクトを 1 つのオブジェクトにコピーすることをサポートします。 var obj1 = { foo: "foo" }; var obj2 = { bar: "バー" }; var copySpread = { ...obj1, ...obj2 }; // オブジェクト {foo: "foo", bar: "bar"} コピー拡散 {foo: "foo"、bar: "bar"} var obj = {a:1,b:2,c:3} var objs = {...obj} オブジェクト {a: 1、b: 2、c: 3} オブジェクトa=10 10 オブジェクト {a: 10、b: 2、c: 3} オブジェクト {a: 1、b: 2、c: 3} 2. ディープコピー1. オブジェクトシリアル化JSON.stringify()とJSON.parse()を使用する注: このメソッドは、元のオブジェクトにシリアル化可能な値型が含まれており、循環参照がない場合にのみ機能します。シリアル化できない値タイプの例としては、Date オブジェクトがあります。JSON.parse はこれを文字列に解析することしかできず、元の Date オブジェクトやプロパティ値が関数であるオブジェクトに戻すことはできません。 var obj = {a:1,b:[1,2,3],c:{e:3},bool:false} 未定義 var objs = JSON.parse(JSON.stringify(obj)) 未定義 オブジェクト {a: 1、b: 配列(3)、c: {…}、bool: false} objs.bool = true 真実 オブジェクト {a: 1、b: 配列(3)、c: {…}、bool: true} オブジェクト {a: 1、b: 配列(3)、c: {…}、bool: false} 2. 再帰を使用してオブジェクトのプロパティを判断する関数 deepClone(obj) { var コピー; // obj が null、undefined、またはオブジェクトでない場合は、obj を直接返します // 3つの単純な型とnullまたはundefinedを処理します if (null == obj || "object" != typeof obj) の場合、obj を返します。 // 日付を処理する if (obj インスタンス 日付) { コピー = new Date(); コピー.setTime(obj.getTime()); コピーを返す; } // 配列を処理する if (obj インスタンスの配列) { コピー = []; (var i = 0, len = obj.length; i < len; i++) の場合 { コピー[i] = クローン(obj[i]); } コピーを返す; } //ハンドル関数 if (obj インスタンスオブ関数) { コピー = 関数() { obj.apply(this, arguments) を返します。 } コピーを返す; } //オブジェクトを処理する if (obj インスタンスオブオブジェクト) { コピー = {}; (var attr in obj) { obj.hasOwnProperty(attr) がある場合、copy[attr] を clone(obj[attr]) します。 } コピーを返す; } throw new Error("型がサポートされていないため、obj をコピーできません " + obj.constructor.name); } 以上がJSオブジェクトのコピー(ディープコピーとシャローコピー)の詳細です。JSの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください! 以下もご興味があるかもしれません:
|
<<: Linux で binlog ファイルの作成時間を表示するコマンド
現在実装されているのは、基本的な使用方法、クリア可能なボックス、パスワードボックスです。参考リンク:...
:is と :where とは何ですか? :is()と:where()は、セレクターを作成するとき...
今日、docker で redis 環境を構築していたところ、yum がリソースを取得できず、インタ...
目次1. 公式の足場を使って構築する2. プロジェクトディレクトリ分析3. TypeScript の...
目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...
モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...
Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbix...
この記事では、MySQL テーブル データのインポートおよびエクスポート操作について説明します。ご参...
目次1. 基本理論1.1 取引1.2 分散トランザクション2. 分散トランザクションソリューション2...
1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...
目次1. 要件の説明2. アイデアの概要1. 延長を要求する2. アイデアの概要3. SQLコード1...
Scrcpyのインストールsnap install scrcpy adbサービスのインストールsu...
前回の記事「Docker コンテナの UID と GID を理解する」では、Docker コンテナ内...
HTML と CSS で、ボタンの色を設定したいとします。 目的の効果は得られますが、プロセスはかな...
目次序文ステップ1: セットアップと前方屈折ステップ2: 反射とフレネル方程式ステップ3: 多面屈折...