Скобочная нотация в Javascript
Вычисляемые свойства объекта в Javascript
Скобочная нотация позволяет внутри квадратных скобок указать выражение, которое будет вычислено как имя свойства объекта. Например, можно использовать скобочную нотацию, чтобы динамически получать значения свойств:
const user = { username: 'Ivan', type: 'admin' };
let propertyName = 'username';
user[propertyName]; // 'Ivan'
propertyName = 'type';
user[propertyName]; // 'admin'
В ES6/ECMAScript 2015
также добавилась возможность указывать вычисляемые имена свойств в момент создания объекта. До появления вычисляемых имен свойств нужно было сначала создать объект, а затем использовать запись в квадратных скобках, чтобы присвоить это свойство значению. Например, создаем пользователя:
const key = 'name';
const value = 'Vasya';
const user = {};
user[key] = value;
console.log(user.name); // Vasya
В примере выше мы сначала создаем объект user
, и только потом назначаем выражение в качестве имени. С появлением вычисляемых имен свойств необходимости в этом шаге нет, и имя свойства вычисляется сразу в момент создания объекта:
const key = 'name';
const value = 'Vasya';
const user = {
[key]: value
};
console.log(user.name); // Vasya
Используя вычисляемые свойства, можно также производить какие-либо действия над ключами. Выражение, указанное с скобках, будет вычислено и использовано в качестве имени свойства. Например, добавим цифру к имени поля при создании пользователя:
const key = 'name';
const value = 'Vasya';
const user = {
[key + '25']: value
};
console.log(user); // { name25: 'Vasya'}
console.log(user.name25); // 'Vasya'