Сегодня я собираюсь поделиться с вами тем, что делают эти вспомогательные методы объекта JavaScript, и как вы должны быть в состоянии объяснить, что они делают.

Object.assign()

Как и его имя Object.assign() — назначает его свойства, а не копирование или определение новых свойств. Он использует методы геттера и сеттера, создает экземпляр сеттера и геттера и переопределяет сеттер.

const set = { a: "foo", b: "bar" };
const get = { b: "baz", c: "quz" };
const returnedObj = Object.assign(set, get);
console.log(set);
// expected output: Object { a: "foo", b: "baz", c: "quz" }
console.log(returnedObj);
// expected output: Object { a: "foo", b: "baz", c: "quz" }

Звучит знакомо 🤔, да! На втором месте стоит оператор спреда, также известный как три точки {…}. Это более короткий синтаксис, но он не может заменить Object.assign() из-за функций получения/установки, которых нет у оператора расширения.

Object.entries()

Object.entries() возвращает массив пар [ключ, значение]. Это здорово знать. Например, когда вам нужно получить что-то из массива, преобразовать его в объект, а затем получить значения из объекта. Примечание. Это распространенная схема решения алгоритмов подсчета.

const object1 = {
  a: 'foo',
  b: 'baz',
  c: 'bar'
};
const arr = Object.entries(object1);
console.log(arr)
// expected output: [['a', 'foo'], ['b', 'baz'], ['c', 'bar']]

Звучит знакомо 🤔, да! for…in цикл! Разница лишь в том, что цикл for…in перечисляет свойства объекта.

Object.values() и Object.keys()

Я уверен, вы догадались! Object.values() возвращает массив значений объекта. Object.keys() возвращает массив всех ключей объекта. Оба они могут быть обработаны с помощью простого цикла for…in для достижения того же результата.

const object1 = {
  a: 'foo',
  b: 'baz',
  c: 'bar'
};
console.log(Object.keys(object1)
// expected output: ['a', 'b', 'c']
console.log(Object.values(object2)
// expected output: ['foo', 'baz', 'bar']

Подводя итог, вспомогательные методы хороши, но непонимание того, что они делают, когда вы их используете, — нет. Удачного кодирования!