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() メソッド

推薦する

VPS はオフライン ダウンロード サーバーを構築します (ネットワーク ディスクの時代以降)

モチベーション学習の必要性から、海外のサーバーメーカー(どこのメーカーかは言いません)のVPSサービ...

Dreamweaver で Zen コーディングを使用する方法

前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...

6ull が Linux ドライバ モジュールをロードできない問題の解決方法

目次0x01 ドライバーモジュールのロードに失敗しました0x02 ソリューション要約する0x01 ド...

ファイルのダウンロードを実現する javascript Blob オブジェクト

目次例示する1. ブロブオブジェクト2. フロントエンド3. バックエンド要約する例示する最近、ファ...

HTML初心者や初級者向けの提案。専門家は無視してかまいません。

感想:私はバックエンド開発者です。静的 (HTML) ページを取得すると、ページ構造と命名規則が極端...

CSS3 3Dクールキューブ変形アニメーションの実装

私はコーディングが大好きです。コーディングすると幸せになります!みなさんこんにちは、Counterで...

MySQL マルチバージョン同時実行制御 MVCC の基本原理の分析

目次1 トランザクションの同時実行で発生する問題1.1 ダーティリード1.2 繰り返し不可能な読み取...

Javascript フロントエンド最適化コード

目次if判定の最適化1. 最も簡単な方法:判断2. より良い方法: スイッチ3. より良いアプローチ...

仮想マシンでXshell5をLinuxに接続する方法と障害の解決方法

かなり前に仮想マシンをインストールしましたが、ようやく Linux をインストールしました。マシンの...

React useMemo と useCallback の使用シナリオ

目次メモを使うコールバックの使用メモを使う親コンポーネントが再レンダリングされると、そのすべての要素...

Dockerコンテナを終了した後も実行を継続する方法

現象:イメージを実行します (例: ubuntu14.04)。 docker run -it --r...

CSS の position 属性の値に関する研究 (概要)

CSS の位​​置属性は要素の配置タイプを指定し、上、下、左、右を使用して要素を具体的に配置します...

CentOS7にsshをインストールして設定する

1. openssh-serverをインストールする yum インストール -y openssl o...

Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...