Объекты в JS
Объект в JavaScript определяется спецификацией как набор свойств.
Каждое свойство принадлежит одному из двух типов:
- data property (свойство данных)
- accessor property (свойство доступа)
Data property
Свойство данных связывает значение ключа со значением и набором логических атрибутов:
value— значение свойства (ECMAScript value)writable— логический атрибут, по умолчанию false; если false, значение не может быть измененоenumerable— логический атрибут, по умолчанию false; если true, свойство может участвовать в итерировании посредством "for-in"configurable— логический атрибут, по умолчанию false; если false, свойство не может быть удалено, нельзя изменить его тип (data и accessor), нельзя изменить никакие атрибуты, кромеvalueи выставленияwritableв false
Accessor property
Свойство доступа связывает значение ключа с одной или двумя функциями доступа и набором логических атрибутов.
get— функция, возвращающая значение объектаset— функция, вызываемая при попытке присвоить значение свойствуenumerable— аналогично data propertyconfigurable— аналогично data property
Ключи
Свойства идентифицируются с помощью ключей. Ключи используются для доступа к свойствам и их значениям.
Ключ свойства (property key) — String или Symbol.
Имя свойства (property name) — ключ, который является строковым значением.
Целочисленный индекс — строковый ключ свойства, который является
канонической числовой строкой и числовое значение которого неотрицательно.
Индекс массива — целочисленный индекс, числовое значение которого находится
в диапазоне от 0 до 232 - 1.
Пример
const point = {x: 0, y: 1};
{ x: {value: 0, writable: true, enumerable: true, configurable: true}, y: {value: 1, writable: true, enumerable: true, configurable: true}, }