Вопрос на собеседовании
Как мы знаем, Polyfill - это самый часто задаваемый вопрос в интервью, и Object.assign () - один из них.
Во-первых, нам нужно понять, что делает Object.assign () и где мы можем его использовать?
Object.assign () копирует значения (всех перечисляемых собственных свойств) из одного или нескольких исходных объектов в целевой объект.
Пример: Object.assign (цель,… источники)
const obj = { a: 1 };
const copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }
и теперь посмотрим, где мы обычно используем
- где бы мы ни хотели неглубоко скопировать объект, чтобы это не повлияло на родительский объект.
- один из основных принципов Redux - никогда не изменять состояние, вы часто будете использовать Object. assign () для создания копий объектов с новыми или обновленными значениями.
Теперь реализуем полифил Object.assign (),
- target - это место, где все source1, source 2 будут объединены или замещены свойством.
- nextSource - это источник1, источник2…. мы указываем второй параметр Object.assign
- нам нужно использовать for loop для перебора всех источников (source1, source2,…)
- Для выполнения цикла мы будем использовать аргументы, начальный индекс которых равен 1.
- новый цикл for, чтобы скопировать свойство всех источников в объект newTo
- и, наконец, мы вернем объект newTo, где у нас будут все свойства source1, source2 и т. д.
Резюме
- Пожалуйста, прочтите подробное обсуждение MDN - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
Не забудьте подписаться на публикацию The Lean Programmer Publication, чтобы увидеть больше таких статей, и подпишитесь на нашу новостную рассылку tinyletter.com/TheLeanProgrammer