Объекты в 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}, }