、Object.assign()
Object.assign()メソッドは、値がターゲット・オブジェクトに1つ以上のソースオブジェクトからコピーされたすべての属性を列挙するために使用されます。これは、ターゲットオブジェクトに戻ります。そして、ソースオブジェクトが変更されます。
CONSTターゲット= {1、B:2}。
CONSTソース= {B:4、C 5}。
CONST returnedTarget = Object.assign(ターゲット、ソース)
console.log(ターゲット)
//期待される出力:オブジェクト{1、B:4、C 5}
console.log(returnedTarget)。
//期待される出力:オブジェクト{1、B:4、C 5}
同じキーを持つターゲットオブジェクトのプロパティ場合、属性はソースオブジェクトのプロパティで覆われています。ソースオブジェクトのプロパティは、同様にソースオブジェクトのプロパティの正面の後ろにカバーします。複数のオブジェクトがマージされるサポートし、ターゲット・オブジェクトを変更しない場合、ターゲットオブジェクトは、{}空で変更することができます
例如:CONST returnedTarget = Object.assign({} 、ソース、ソース)。
Object.assign
この方法は、ソースのみをコピーし、オブジェクト自体は、ターゲット・オブジェクトの属性を列挙することができます。この方法は、ソースオブジェクトを使用する[[Get]]
と、ターゲット・オブジェクトは[[Set]]
、それが関連するゲッターとセッターを呼び出します。したがって、属性だけではなく、コピーを割り当てたり、新しい属性を定義しています。マージソースがゲッターが含まれている場合、プロトタイプに組み込まれた新しいプロパティのために、それは適さない可能性があります。プロトタイプに(の列挙を含んでいてもよい)属性を定義するために使用されるべきであるObject.getOwnPropertyDescriptor()
とObject.defineProperty()
。
String
Typeと Symbol
type属性がコピーされます。
例えば、エラーの場合は、プロパティが書き込み可能、原因ではない場合TypeError
にエラーをスローする前に、任意のプロパティを追加する場合、変更することができ、target
件名を。
、注意Object.assign
されていないものでsource
、目標値 null
や undefined
間違った時間を投げます。
ループスルーの第二に、使用
上のこの小さなトラブル
VAR OBJ1 = {名: '张三'}。
VAR OBJ2 = {年齢:18}。
(OBJ2でVARキー){ための
IF(obj2.hasOwnProperty(キー)=== TRUE){
OBJ1 [キー] = OBJ2 [キー]。
}
}
にconsole.log(OBJ1)。