JavaScript — мультипарадигмальный язык, но объекты имеют решающее значение
Основным типом данных JavaScript является объект. Объект — это составное значение, объединяющее несколько значений. Он может содержать примитивные значения и другие объекты.
Эти значения хранятся в так называемых свойствах. Каждое свойство является ключом, равным имени свойства, и значением, равным либо примитивному типу, либо объекту. Вкратце: свойство= ‹ключ, значение›.
Объект позволяет вам хранить и извлекать эти значения по имени (ключу). Массив — это упорядоченная коллекция, а объект — неупорядоченная коллекция свойств.
Имена свойств представляют собой строки — так сказать, объекты сопоставляют строки значениям.
Понимание объектов на простом примере
Вот пример объекта. Это treasureChest
, и он содержит 2 примитивных типа (kind
и locked
), а также еще один объект (content
).
Сам объект content
снова содержит 2 примитивных типа (gold
и item
).
Создание объекта с помощью простой литеральной записи
Вы можете создать объект с литеральной записью, как показано выше. Вот синтаксис.
Последнее, что нужно знать об объектах в целом
Объекты сохраняются в переменных как ссылки.
Примитивы (число, логическое значение и т. д.) хранятся как значения.
Все переменные отражают изменение, когда вы присваиваете объект нескольким переменным и изменяете свойства одной переменной (которая содержит тот же объект, что и другие).
Это означает, что переменная хранит описание того, где найти оригинал, а примитивы копируют свое значение при присвоении переменной.
Изучите пример справа от посмотрите, что происходит при изменении значения внутри ссылки, сохраненной в двух переменных (i и j).
Если вы измените свойство a
внутри j
на 666
и выведете i
на консоль, вы увидите, что этот объект содержит точное значение 666
, а не 5
больше.
🔥: Сравните техническое задание со следующими состояниями: Представьте, что вы в отпуске и спрашиваете кого-то, где находится местная церковь. Человек даст вам описание того, где найти церковь. Не сама церковь.
Если каким-то образом город решит переместить церковь, все остальные ссылки должны знать об этом обстоятельстве. Если нет, они дадут вам направление на «ноль».
Свойства — это характер объекта
Объекты используются для выполнения общих операций:
- создавать
- набор
- запрос
- удалить
- тест
- и перечислить их свойства.
Каждое свойство имеет имя и значение. Вы не можете иметь два свойства с одинаковым именем в одном объекте. Каждое свойство имеет связанное значение/я.
Вы получаете доступ к значению свойства, записывая идентификатор объекта, как и идентификатор переменной, плюс оператор точки. А затем свойство, с которым вы хотите получить связанное значение/объект.
Методы — это способности объекта
Вы также можете назначать функции свойствам. В этом конкретном контексте вы используете термин метод вместо свойства.
🔥:В JavaScript функции являются гражданами первого класса. Это означает, что они также являются объектами и могут передаваться другим функциям.
Методы JavaScript — это действия/способности, выполняемые над объектом. Изучите следующий пример, в котором я определил метод open: function() { return this.content }
.
Когда вы обращаетесь к этому методу, вы выполняете вызов функции (поэтому для доступа нужны две фигурные скобки в конце '()'). По сравнению с линией treasureChest.locked
на рис. 3.
Вы определяете метод, когда хотите выполнить какие-то действия только для этого объекта. Более очевидно, что будет делать ваш код, когда вы его прочитаете.
Сравните эти два примера:
Теперь вы можете вызвать метод для грабежа treasureChest
с помощью treasureChest.loot()
. Обернутый console.log()
, и вы получите содержимое treasureChest
для печати на консоли.
Прототипное наследование очень важно
Объект — это больше, чем просто сопоставление строки со значением.
Помимо сохранения собственного набора свойств, объект также наследует свойства другого объекта, известного как прототип.
Методы объекта обычно являются унаследованными свойствами. наследование прототипов — ключевая особенность JavaScript.
Собственное свойство определяется непосредственно в объекте (как я сделал с методом открытия). Для сравнения унаследованное свойство — это свойство, определенное объектом-прототипом объекта.
Унаследованные, определенные в прототипе, начинаются с Object.prototype.
Значение свойства прототипа — это объект, контейнер для хранения свойств и методов, которые мы хотим наследовать объектам, расположенным дальше по цепочке прототипов.
Таким образом, Object.prototype.toString(), Object.prototype.valueOf() и т. д. доступны для любых типов объектов, наследуемых от Object.prototype, включая новые экземпляры объектов, созданные из конструктора.
Эти методы-прототипы широко используются, и было бы бессмысленно определять их для каждого объекта вручную, помимо нескольких других преимуществ, которые предоставляет прототипное наследование.
Узнайте все подробности о прототипном наследовании здесь.
Невозможно знать, чему учиться, если вы все еще учитесь. Представьте, что кто-то имеет опыт создания концентрированных шпаргалок. К счастью, они здесь!
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.