Для создания и обновления значений свойств в объекте используется одна и та же операция — присваивание. Для несуществующих свойств она запишет новый элемент, для существующих — перезапишет новым значением:
const user = { name: 'Vasya', married: true, age: 25 }
user.married = false
// Изменение существующего свойства
// То же самое
// user['married'] = false;
user.surname = 'Petrov'
// Добавление нового свойства
// То же самое
// user['surname'] = 'Petrov';
console.log(user)
// => { name: 'Vasya', married: false, age: 25, surname: 'Petrov' }
Несмотря на то, что объект объявлен как константа, он меняется. Причина такого поведения точно такая же, как и в случае массивов. В константе хранится не сам объект, а ссылка на него. Это значит, что менять объект можно, но заменить объект на другой нельзя:
const user = { name: 'Maria' }
user.name = 'Igor'
// Возникнет ошибка
user = { name: 'Mike' } // Boom!
Подробнее об этом будет в одном из следующих уроков.
Изменяемость объектов позволяет наполнять их постепенно. То есть мы можем создать пустой объект и затем расширить его нужными свойствами:
const course = {}
course.name = 'Хекслет — JS: Объекты'
course.description = 'Самый классный курс на свете, не проходите мимо, дети!'
console.log(course.name) // 'Хекслет — JS: Объекты'
console.log(course)
// {
// name: 'Хекслет — JS: Объекты',
// description: 'Самый классный курс на свете, не проходите мимо, дети!'
// }
Удалить элемент из объекта можно с помощью оператора delete
:
const user = { name: 'Vasya', wrongProp: 'bug' }
delete user.wrongProp
console.log(user)
// => { name: 'Vasya' }
Несмотря на наличие удаления, удалять свойства из объекта плохая практика. Как вы увидите далее, любую задачу можно решить без удаления и главное, что такой код будет лучше.
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.