Перейти к основному содержимому

Объекты в 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 property
  • configurable — аналогично 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},
}