合わせObject.assign()オブジェクト - ES6

 

Object.assignオブジェクトをマージするための方法は、全ての列挙属性のソースオブジェクト(ソース)は、対象物(ターゲット)にコピーします。

CONSTターゲット= {1 }。

CONSTソース1 = {B:2 }。
CONSTソース2 = {C:3 }。

Object.assign(ターゲット、ソース1、ソース2)。
ターゲット// {:1、B:2、C 3}

 

Object.assign最初のパラメータは、ソース・オブジェクトのパラメータが後ろにあり、ターゲット・オブジェクトのメソッドです。

ソースオブジェクトとターゲットオブジェクトは、以前の属性上書き属性後、同じ名前の属性、または同じname属性のソースオブジェクトを複数有している場合ことに留意されたいです。

CONSTターゲット= {1、B:1 }。

CONSTソース1 = {B:2、C:2 }。
CONSTソース2 = {C:3 }。

Object.assign(ターゲット、ソース1、ソース2)。
ターゲット// {:1、B:2、C 3}

 

注意点

(1)浅いコピー

Object.assignこの方法ではなく、深いコピーよりも、簡易コピーを実践されています。つまり、ソースオブジェクトがオブジェクトである場合、プロパティの値は、ターゲットオブジェクトのコピーが、オブジェクトへの参照になってしまいます。

CONST OBJ1 = {{B:1 ;}} 
CONST OBJ2 = Object.assign({}、OBJ1)。

obj1.ab = 2 
obj2.ab // 2

 

上記のコードでは、ソース・オブジェクトobj1a属性の値は、オブジェクトであるObject.assign得られたコピーはオブジェクトへの参照です。このオブジェクトの変更は、宛先オブジェクトに反映されます。

同じname属性の(2)の交換

このネストされたオブジェクトの場合、同じ名前のイベント属性は、Object.assign処理方法ではなく追加するよりも、交換することです。

CONSTターゲット= {{B 'C'、D 'E' }} 
CONSTソース = {{B 'ハロー' }} 
Object.assign(ターゲット、ソース)
// {{B: 'こんにちは' } }

上記のコードは、targetオブジェクトのa属性はsource、オブジェクトaを取得しないが、置換全体の特性{ a: { b: 'hello', d: 'e' } }結果を。これにより、開発者は、欲しい特別なケアを必要としない通常です。

いくつかのライブラリが提供するObject.assign(例えばLodashのようなカスタマイズされたバージョンの_.defaultsDeepディープコピーを得ることができる方法を)。

(3)処理アレイ

Object.assignアレイを処理するために使用することができるが、アレイは、オブジェクトとして扱われます。

Object.assign([1、2、3]、[4、5 ])
 // [4,5、3]

 

上記のコードでは、Object.assign0,1,2という名前のオブジェクトのプロパティとして配列は、ソース配列プロパティ0は4、標的配列の0性質をカバー1

工程(4)関数の値

Object.assignその後、評価され、その後、コピー、値のみをコピーし、あなたが値をコピーしたい場合は、値の関数です。

CONSTソース= { 
  GETのfoo(){ リターン 1 } 
}。
CONST目標 = {}; 

Object.assign(ターゲット、ソース)
// {FOO:1}

上記のコードは、sourceオブジェクトのfoo属性値は、関数でObject.assign、過去にこの値をコピーして、値を取得するだけで、後に、関数の値をコピーしません。



 

おすすめ

転載: www.cnblogs.com/LChenglong/p/12175115.html