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

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

メソッド: Object.assign()
機能: ソース オブジェクトの値をターゲット オブジェクトに割り当てます。両方のオブジェクトの値が上書きされ、ターゲット オブジェクトの値は保持され、ソース オブジェクトの値が追加されます。
方向

Object.assign メソッドは、ディープ コピーではなく、シャロー コピーを実行します。つまり、ソース オブジェクトのプロパティの値がオブジェクトの場合、ターゲット オブジェクトはこのオブジェクトへの参照をコピーします。

var object1 = { a: { b: 1 } };

オブジェクト2 = Object.assign({}, オブジェクト1);

オブジェクト1.ab = 2;

コンソールにログ出力します。

2. 目的

2.1 オブジェクトにプロパティを追加する

2.2 オブジェクトへのメソッドの追加

2.3 オブジェクトの複製

関数 copyFnc(origin) {

Object.assign({}, origin) を返します。

var sur = { a: 1, b: 2 };

console.log(copyFnc(sur));

上記のコードは、元のオブジェクトを空のオブジェクトにコピーし、元のオブジェクトのクローンを取得します。

ただし、このメソッドを使用してクローンを作成すると、元のオブジェクト自体の値のみがクローン化され、継承された値はクローン化されません。継承チェーンを維持したい場合は、次のコードを使用できます。

関数クローン(origin) {

originProto = Object.getPrototypeOf(origin); とします。

Object.assign(Object.create(originProto), origin) を返します。

}

JS では、サブクラスは Object.getPrototypeOf を使用して親クラスのメソッドを呼び出し、オブジェクトのプロトタイプを取得します。

2.4 複数のオブジェクトの結合

//複数のオブジェクトを1つのオブジェクトにマージする

const merge = (target, ...sources) => Object.assign(target, ...sources);

//複数のオブジェクトを新しいオブジェクトにマージする

const merge = (...sources) => Object.assign({}, ...sources);

2.5 プロパティのデフォルト値の指定

const デフォルト = {
ログレベル: 0,
出力フォーマット: 'html'};
関数 processContent(options) {let options = Object.assign({}, DEFAULTS, options);
}

ES6 Object.assign() の使い方と目的についてはこれで終わりです。ES6 Object.assign() の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • ES6 Object.assign() の使い方と使用法
  • ES6 の新しい Object.assign() メソッドの詳細な説明

<<:  Vue で手ぶれ補正を実装するためのサンプルコード

>>:  要素の属性を削除する JS removeAttribute() メソッド

推薦する

分散監視システムにおけるZabbixのアクティブ、パッシブ、Web監視のプロセスの詳細な説明

前回の記事では、Zabbix のネットワーク検出機能について学習し、アクションと組み合わせてホストの...

MySQL Bツリーインデックスとインデックス最適化の概要についての簡単な説明

MySQL の MyISAM エンジンと InnoDB エンジンはどちらもデフォルトで B+ ツリー...

React NativeのstartReactApplicationメソッドの簡単な分析

今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...

Hyper-v仮想マシンを使用してCentos7をインストールする

目次導入準備するシステムイメージをダウンロードHyper-Vを有効にする新しい仮想ネットワークスイッ...

Linux で開いているファイルが多すぎる問題を解決する方法

原因は、プロセスが特定の時点でシステム制限を超える数のファイルと通信リンクを開くことです。 システム...

Linux サーバーのステータスとパフォーマンスに関連するコマンドの詳細な説明

サーバーステータス分析Linux サーバーの CPU の詳細を表示する#CPU情報を表示[root@...

シンプルなビデオ連射機能を実装する JavaScript CSS3

この記事では、最も単純なビデオ連射機能をシミュレートするデモを作成します。アイデア:再生する動画と同...

MySQL 5.7.30 のインストールとアップグレードの問題に関する詳細なチュートリアル

くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...

W3C が推奨するモバイル Web マークアップ言語 XHTML Basic 1.1

W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

MySQL 5.7.17無料インストール版のインストールと設定

MYSQLバージョン:MySQL Community Server 5.7.17、インストール不要版...

Vue を使用した Amap アプリケーション開発のベスト プラクティス

目次序文非同期読み込みパッケージコンポーネントコンポーネントの使用インターフェースをカスタマイズする...

MySQLのinnodb_data_file_pathパラメータを変更する際の注意事項

序文innodb_data_file_path は、innodb テーブルスペース ファイルを指定す...

Linuxカーネルで中国語の文字を出力する方法

次のように、Windows/MacOS からログインした Linux の SSH ターミナルで簡単に...

CSS で 3D ルービック キューブを実装するサンプル コード

今日は簡単な3Dルービックキューブを作ってみましょうまずはレンダリングを見てみましょう!これを学んだ...