Unterschied zwischen Object.assign und Objekt verteilt
Mitvar obj = { a: 1, b: 2};
Was sind die Unterschiede zwischen
obj = Object.assign(obj, { c: 3});
Und
obj = {...obj, c: 3 };
Unterschied zwischen Object.assign und Objekt verteilt
Mitvar obj = { a: 1, b: 2};
Was sind die Unterschiede zwischen
obj = Object.assign(obj, { c: 3});
Und
obj = {...obj, c: 3 };
Der Unterschied ist, dass, wenn eine Ausbreitung verwenden Sie immer Erstellen eines neuen Objekts:
const a = { name: 'Joe Bloggs' }
const b = { ...a, age: 27 };
console.log(a === b) //=> false
Verwendung jedoch Object.assign
Es ist möglich, ein bestehendes Objekt zu mutieren:
const a = { name: 'Joe Bloggs' }
const b = Object.assign(a, { age: 27 });
console.log(a === b) //=> true
Sie können das Verhalten eines Objekts Aufstrich mit Object.assign
durch ein erzielen vorbei Objektliteral als erstes Argument:
const a = { name: 'Joe Bloggs' }
const b = Object.assign({}, a, { age: 27 });
console.log(a === b) //=> false
Da Sie kein Ziel mit Objektverteilung angeben können und daher vorhandene Objekte nicht mutieren können, ist es tatsächlich sicherer als "Objekt.Zuordnung" und mehr Nutzen. – ftor
Check [kompilierte Version] (https://babeljs.io/repl/#?evaluate=false&lineWrap=false&presets=es2015%2Cstage-2&code=obj%20%3D%20%7B. ..obj% 2C% 20% 20c% 3A% 203% 20% 7D% 3B) und [Vorschlag] (https://github.com/sebmarkbage/ecmascript-rest-spread) –
OK, also der Spread-Operator für Objekt Literale ist nicht ES6, während 'Object.assign' ist. – ftor