Объектный литерал, также называемый объектом, может иметь свойства, методы или их комбинации. Свойства — это данные, а методы — это функции; оба вложены в объект и разделены запятыми. В следующем примере показано, как переменная obj инициализируется одним свойством, key, и одним методом, print. Как определено, key имеет значение val, а метод print выводит значение key.

В приведенном выше примере obj действует как пространство имен, и его необходимо ввести, чтобы получить доступ к его свойствам и методам. Доступ к свойствам и методам объекта осуществляется через точечную нотацию.

Это отображается в console.log(obj.key) и obj.print(). В обоих случаях будет выведено val; однако первое возвращается через точечную нотацию по объектному свойству, а второе — через точечную нотацию по объектному методу.

При оценке метода print ключевое слово this отображается как пространство имен. Ключевое слово this используется для доступа к свойствам и методам текущего объекта. В приведенном выше примере this оценивается как obj и позволяет методу print получить доступ к свойству key.

Доступ к свойствам объекта также можно получить с помощью круглых скобок.

В приведенном выше примере obj.key и obj[‘key’]оба возвращают val; однако последний сопоставляет строку со свойством. Таким образом, строка в квадратных скобках [‘key’] оценивается как key. В отличие от точечной нотации, методы объекта НЕ могут быть доступны с помощью скобочной нотации.

И точечная, и квадратная нотация могут использоваться для динамического задания имен и значений свойств. Примеры этого видны в следующем:

Чтобы просмотреть новые свойства объекта, используйте Object.keys(arg), где arg — это объект.

Вывод в этом примере возвращает следующее:

Сделав еще один шаг, рассмотрим следующую функцию createPost.

Когда функция createPost выполняется, она создает объект post и добавляет два свойства: subject и message, а также один метод, print. Функция createPost действует как конструктор для объекта post. Аргументы: sub и msg используются для установки значений свойств post и post Метод print используется для вывода значений обоих свойств. Функция createPost завершает выполнение и возвращает объект post через return post.

В приведенном ниже примере объявляется newPost, который эквивалентен возвращаемому результату createPost.

Используя метод console.log(), newPost оценивается следующим образом:

Конструктор createPost можно повторно использовать для создания объектов post по мере необходимости.

В приведенном ниже коде показано объявление newPost0 и newPost1, а затем, соответственно, использование вложенного метода print с помощью записи через точку.

Комбинация кода и вывода выше демонстрирует, как можно использовать конструкторы.

Как показано, конструктор можно использовать повторно, он инициализирует объект со свойствами и методами. Объект фокусируется, объявляя его пространство имен. После установки пространства имен доступ к свойствам объекта можно получить с помощью записи через точку или скобки, а к его методам можно получить доступ только через запись через точку. Свойства могут быть добавлены к объекту динамически с помощью точки или квадратных скобок, а объект может ссылаться на себя с помощью ключевого слова this.

Использованная литература:

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics