Я подписался на курс по основам JS, организованный Флавио Копесом. Каждый день Флавио рассылает участникам электронные письма с парой вопросов/задач. Всего должно быть 35 писем. Отвечать на них не обязательно, но ответы на вопросы являются важной частью курса. Поэтому я решил поделиться своими ответами с миром: в лучшем случае это может помочь кому угодно, кроме меня, в худшем — только мне.
Напишите код, необходимый для создания поверхностной копии объекта
Если у объекта нет сеттеров, мы можем использовать метод assign:
Чтобы скопировать сеттеры объекта, есть еще один способ поверхностного копирования: комбинация методов defineProperties и getOwnPropertyDescriptors:
Напишите код, необходимый для сравнения двух объектов
Давайте сравним объекты song и songCopy:
Возьмите один из вышеперечисленных объектов и напишите код, необходимый для того, чтобы одно из его свойств было доступно только для чтения, а не для редактирования.
Свойство можно сделать неизменяемым с помощью флага writable:
Обратите внимание, что попытка переназначить неизменяемое свойство вызывает ошибку только в строгом режиме.