Сегодня я собираюсь поделиться с вами тем, что делают эти вспомогательные методы объекта 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']
Подводя итог, вспомогательные методы хороши, но непонимание того, что они делают, когда вы их используете, — нет. Удачного кодирования!