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.