Object.assign

Object.assign

Object.assign() je užitečná metoda pro kopírování vlastností ze zdrojových objektů do cílového objektu. Funkce je užitečná pro klonování objektů nebo pro přípravu objektu s požadovanými vlastnostmi pro další použití v kódu.

Pro příklad použijme následující objekty.

const defaults = { name: 'John', age: 30 };
const options = { address: { city: 'New York', country: 'USA' } };

Objekt v prvním argumentu je cílový objekt, který je modifikován a vrácen jako návratová hodnota funkce. Další argumenty jsou zdrojové objekty, ze kterých kopírujeme vlastnosti.

const settings = Object.assign({}, defaults, options);

V případě duplicitních klíčů ve zdrojových objektech je použita hodnota později vloženého objektu.

Díky spread operátoru je pro vývojáře slučování objektů také hračkou.

const C = {...defaults, ...options}

Co z předhozícho příkladu není úplně vidět, ale je důležité zmínit, že Object.assign() ani spread operátor nedělá hlubokou kopii.

Nevhodné použití

V tomto případě si přepíšeme původní object, který jsme dost možná neměli v úmyslu změnit.

Object.assign(defaults, options);

Dostaneme sice požadovaného výsledku, nicméně dostaneme zbytečný side-effectu

let settings = {}
Object.assign(settings, defaults, options);