object.assignノート

基本的な使い方

object.assign():引数がオブジェクトでない場合、オブジェクトをマージするための方法であって、ターゲットオブジェクトにコピーされ、すべての列挙属性のソースオブジェクト(ソース)は、(ターゲット、ターゲットオブジェクトを返す、オブジェクトは、オンされます二つのパラメータがある戻り、最初のものは、第二のソースオブジェクトである、ターゲット・オブジェクトです。

const target = { a: 1 };

const source1 = { b: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
  1. 同じ名前== ==ターゲット・オブジェクトおよびソースオブジェクトと複数の属性がある場合、ターゲット・オブジェクトのソースオブジェクトオーバーライド特性、後者の上書き前のソース・オブジェクト・プロパティのソースオブジェクトのプロパティ。
const target = { a: 1, b: 1 };

const source1 = { b: 2, c: 2 };
const source2 = { c: 3 };

Object.assign(target, source1, source2);
target // {a:1, b:2, c:3}
  1. 未定義とnullはオブジェクトに回すことができないので、彼らは最初のパラメータまたはパラメータとして使用されているそうだとすれば、それはエラーになります。
Object.assign(undefined) // 报错
Object.assign(null) // 报错
  1. 非オブジェクトは、ソースオブジェクト(すなわち、非最初のパラメータ)の位置に表示された場合、処理ルールが異なっています。まず、これらのパラメータは、あなたがオブジェクトに回すことができない場合は、スキップされ、オブジェクトに変わります。これは、最初の引数がnullとundefinedでない場合は、エラーがないことを。
let obj = {a: 1};
Object.assign(obj, undefined) === obj // true
Object.assign(obj, null) === obj // true
  1. 他のタイプの値(即ち、値、およびブール列)最初のパラメータではないが与えられていません。しかし、ターゲットオブジェクトにコピーされた文字列の配列に加えて、他の値が有効でないであろう。プロパティのObject.assignコピーが制限されるため、ソースオブジェクトの独自のプロパティのコピーだけ(継承された属性をコピーしない)、また性質が(:偽可算)列挙することはできませんコピーします。文字列だけラップされたオブジェクトは、列挙プロパティを生成するためです。

ご注意ください

  1. 浅いコピー
    実装のObject.assign方法ではなく、深いコピーよりも、浅いコピーです。つまり、ソースオブジェクトがオブジェクトである場合、プロパティの値は、ターゲットオブジェクトのコピーが、オブジェクトへの参照になってしまいます。変更がターゲット・オブジェクト上記ソース・オブジェクトに反映されるように、ターゲット・オブジェクトは、ソースオブジェクトが変更される変更します

  2. 配列の操作

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

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

上記のコード、Object.assign属性アレイ0,1,2、及び光源アレイ0~4カバーターゲットアレイ0項目1の、したがってプロパティとして指定されたオブジェクト。

  1. 例外が発生した場合、以降のコピーは行われません
  2. IEのブラウザの互換性は、この方法が良いではありません

おすすめ

転載: www.cnblogs.com/ellen-mylife/p/12010130.html