Доступ к свойствам объекта в JavaScript
- Два способа получить свойство
- Доступ через точку
- Доступ через квадратные скобки
- Имя свойства в переменной
- Свойства со сложными именами
- Изменение и добавление свойств
- Вложенные свойства
- Что выбрать
- Итого
К свойству объекта можно обратиться двумя способами: через точку или через квадратные скобки.
let user = {
name: 'Анна',
age: 28,
};
console.log(user.name); // Анна
console.log(user['name']); // Анна
В простых случаях результат одинаковый. Разница появляется, когда имя свойства хранится в переменной или записано не как обычное имя.
Два способа получить свойство
Синтаксис через точку выглядит короче и читается проще.
object.property
Синтаксис через квадратные скобки более гибкий.
object['property']
Внутри квадратных скобок можно указать строку или выражение, которое вернет имя свойства.
Доступ через точку
Через точку обращаются к свойствам, имена которых заранее известны и записаны как обычные идентификаторы.
let user = {
name: 'Анна',
age: 28,
isAdmin: false,
};
console.log(user.name); // Анна
console.log(user.age); // 28
console.log(user.isAdmin); // false
Такой вариант стоит использовать по умолчанию, если имя свойства простое и не меняется во время работы программы.
Доступ через квадратные скобки
Квадратные скобки позволяют передать имя свойства строкой.
let user = {
name: 'Анна',
age: 28,
};
console.log(user['name']); // Анна
console.log(user['age']); // 28
В таком варианте имя свойства обязательно записывается как строка. Поэтому вокруг name и age стоят кавычки.
Имя свойства в переменной
Главный случай для квадратных скобок - имя свойства хранится в переменной.
let user = {
name: 'Анна',
age: 28,
};
let field = 'name';
console.log(user[field]); // Анна
JavaScript сначала получает значение переменной field. В ней лежит строка ‘name’, поэтому в итоге читается свойство user.name.
Если в такой ситуации использовать точку, результат будет другим.
let field = 'name';
console.log(user.field); // undefined
user.field ищет свойство с именем field, а не значение переменной field.
Свойства со сложными именами
Если в имени свойства есть пробел, дефис или оно начинается с цифры, через точку обратиться не получится.
let course = {
title: 'JavaScript',
'lesson count': 24,
'main-topic': 'objects',
'2026': 'new course',
};
console.log(course['lesson count']); // 24
console.log(course['main-topic']); // objects
console.log(course['2026']); // new course
Такие свойства допустимы, но для доступа к ним нужны квадратные скобки.
Изменение и добавление свойств
Оба способа подходят не только для чтения, но и для изменения свойств.
let user = {
name: 'Анна',
};
user.name = 'Мария';
user['age'] = 30;
console.log(user); // { name: 'Мария', age: 30 }
Если свойства еще нет, оно будет создано. Если свойство уже есть, его значение изменится.
Квадратные скобки особенно удобны, когда нужно изменить свойство по имени из переменной.
let settings = {
theme: 'light',
};
let option = 'theme';
settings[option] = 'dark';
console.log(settings.theme); // dark
Вложенные свойства
Точку и квадратные скобки можно комбинировать.
let user = {
name: 'Анна',
contacts: {
email: 'anna@example.com',
'home city': 'Москва',
},
};
console.log(user.contacts.email); // anna@example.com
console.log(user.contacts['home city']); // Москва
Главное - на каждом шаге выбрать подходящий способ доступа к нужному свойству.
Что выбрать
Если имя свойства простое и заранее известно, используйте точку.
user.name
Если имя свойства хранится в переменной, приходит из данных или содержит пробелы, используйте квадратные скобки.
user[field]
user['home city']
Так код получается понятным: точка для обычного доступа, квадратные скобки для динамических и сложных имен.
Итого
object.property- короткий способ для простых имен свойств.object[‘property’]- способ для строковых имен.object[field]- доступ к свойству, имя которого лежит в переменной.object.fieldне использует переменнуюfield, а ищет свойство с таким именем.- Точку и квадратные скобки можно комбинировать при работе с вложенными объектами.