Создание объектов
Через литерал объекта - { }
Распространенный способ создания объекта - это объявление его через фигурные скобки ( { }
) - литерал объекта.
Мы создали объект, который хранится в переменной object
Консоль выведет нам сущность - пустые фигурные скобки и [[Prototype]]
- единственное пока свойство нашего нового объекта, которое мы ему не добавляли. Это свойство является наследуемым от конструктора Object
- прародителя всех объектов в JavaScript и хранит в себе методы конструктора Object
, доступные текущему объекту, который мы создали и смотрим в консоль, через прототип.
Прототип чем-то схож с генной наследственностью у людей.
Конструктор Object
- первый предок, объект, что мы создали и храним в переменной object
- первый потомок конструктора Object
и через прототип наследует свойства и методы конструктора.
Исходя из знания, что объекты могут и наследуют через прототип свойства и методы, переходим к следующему способу создания объектов.
Через Object.create()
Object
- это конструктор всех объектов в JavaScript.
Он наделен набором свойств и методов, что мы увидели в [[Prototype]]
объекта, который создали через литерал.
Благодаря прототипному наследованию объектов в JavaScript, мы имеем возможность создавать новые объекты, которые будут наследовать свойства и методы от других, созданным нами же объектов или же объекты, без какого-либо наследования вовсе.
Для этого нам следует использовать конструктор Object
и его метод create()
.
Метод Object.create()
создаёт новый объект с указанным прототипом и свойствами.
Если в вызов метода create() мы передадим пустой литерал {}
объекта, то создастся новый объект, у которого будет два предка - оба конструкторы Object.
А если в вызов Object.create() передать аргументом свойство prototype конструктора Object, то получится новый объект, как при создании через литерал.
Если в вызов метода create() мы передадим примитив null
, то создастся новый объект без наследуемых свойств и привязки к конструктору Object.
А вот, если при создании нового объекта через Object.create() с наследием или нет, но при этом еще и сразу добавить какие-либо свойства, мы можем сделать это, указав вторым аргументом в вывоз create() объект {}
, где перечислить свойства со значениями, при этом значения должны быть переданы внутри объектов, где указываются важные параметры для будущего свойства: writable и configurable для определения читабельности и изменения добавляемого значения, также value для обозначения самого значения.
Last updated