Уроки JavaScript — как начать работать с объектами

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

По сути, объект — это совокупность свойств, а свойство состоит из ключа (идентификатора) и значения. В этом смысле объекты в JavaScript похожи на ассоциативные массивы в PHP, но на этом сходство кончается.

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

 

Что такое объекты JavaScript

Рассмотрим простой пример объекта person в JavaScript:

let person = {
  name: "Petr",
  gender: "male",
  age: 40,
  worker: true
}

Это очень простой объект с четырьмя свойствами. Первое свойство содержит ключ «name» и значение «Petr«. Как видно из свойств примера, значения могут использовать много разных типов данных (строки, целые числа, логические и т.д.).

Что делает объекты такими полезными, но также немного запутанными, это то, что значения свойств могут быть функциями. Что выглядит примерно так:

let person = {
  name: "Petr",
  greeting: function() {
    console.log("Aloha " + this.name + "!")
  }
};
person.greeting(); // Aloha Petr!

Данный объект содержит свойство greeting, значением которого является функция. Ниже после определения функции и самого объекта мы можем вызвать эту функцию с помощью следующего синтаксиса: {объект}.{свойство объекта — функция}();. В нашем примере это выглядит следующим образом: person.greeting();. Если вы ссылаетесь на свойства одного объекта, вы можете использовать ключевое слово this.

 

Если вы раньше работали с объектами PHP, здесь идея очень похожа. Но, несмотря на свою простоту, за синтаксисом объектов в JavaScript часто кроется огромная сила.

 

Работа с JavaScript объектами

Давайте немного вернемся назад и научимся создавать простые объекты и управлять ими. Вот основные правила по объектам:

  • они всегда определяются фигурными скобками объект{…};
  • названия свойств нужно брать в кавычки, если они содержат специальные символы, например тире, или если название свойства (ключ) состоит из нескольких слов;
  • значения свойств могут быть разных типов, включая строки, целые числа, массивы и другие объекты;
  • последнее свойство объекта может заканчиваться запятой.

 

Теперь давайте создадим более сложный тестовый объект, содержащий некоторую полезную информацию, которой мы будем манипулировать:

let kniga = {
  type: 'book',
  title: 'Eneida',
  author: 'Ivan Kotlyarevskiy',
  length: 303,
  'Ivan Kotlyarevskiy': {
    type: 'author',
    "first-name": 'Ivan',
    "last-name": 'Kotlyarevskiy'
  },
  price: 150,
  timeToRead: function() {
    return ( this.length * 1.25 / 60 + " hours" );
  }
}

Чтобы получить значение свойства, можно использовать нотацию либо точкой, либо квадратной скобкой, как показано в примере ниже:

console.log( kniga.type ); // book
console.log( kniga["title"] ); // Eneida

Это выведет в консоли браузера тип и название книги.

Подобным образом мы можем обращаться к функции, содержащейся в объекте, просто добавив скобки в конце (и параметры, при необходимости):

console.log( kniga.timeToRead() ); // 6.3125 hours
console.log( kniga['timeToRead']() ); // 6.3125 hours

В данном примере я использую функцию timeToRead(), которая примерно вычисляет время, необходимое для прочтения книги. Отталкиваясь от того, что средняя скорость чтения составляет 120-200 слов в минуту, грубо говоря нужно 1,25 минуты на страницу (на странице примерно 230-250 слов). Я умножил общее количество страниц на 1,25, чтобы получить количество минут, необходимых для полного прочтения. Затем минуты делю на 60, чтобы получить необходимое для полного прочтения книги количество часов.

 

Использование конструкторов в объектах JavaScript

Пока наш код выше неплохой, но он может быть гораздо лучшим. К примеру, когда нам нужно будет создать несколько объектов с одинаковой структурой. Здесь на помощь и приходят конструкторы. Если вы знакомы с объектно-ориентированным PHP, использование конструкторов в объектах JavaScript похоже на использование классов и объектов в PHP. Основная цель конструкторов — удобно создавать объекты, повторно используя код. Подумайте о конструкторе, как о способе инициализации класса. Взгляните на пример ниже, чтобы увидеть это наглядно:

function Kniga( title, author ) {
  this.title = title;
  this.author = author;
  this.info = function() {
    return this.title + ' — ' + this.author;
  }
}
let kniga_1 = new Kniga( 'Eneida', 'Ivan Kotlyarevskiy' );
let kniga_2 = new Kniga( 'Kaydasheva semya​', 'Ivan Nechuy-Levitskiy' );
console.log( kniga_1.title );  // Eneida
console.log( kniga_2.info() ); // Kaydasheva semya​ — Ivan Nechuy-Levitskiy

 

Конструктор — это функция, которая динамически создает свойства для объекта. В примере конструктор назначает первому параметру значение this.title, а для второго — this.author. Он также создает функцию this.info, отображающую название и автора книги.

В функции мы можем ссылаться на характеристики с помощью ключевого слова this. Вне функции мы используем нотацию точкой. Прелесть такого подхода заключается в возможности повторного использования. Вы можете создать сколько угодно данных о книгах, создав новый объект с помощью класса Kniga, объявив его new Kniga();. Объект будет содержать все функции и другие элементы, необходимые для работы.

 

 

Вместо вывода

В этом практическом уроке мы ознакомились с объектами JavaScript и узнали, как начать с ними работать. На примерах увидели, как можно использовать объекты для создания структур данных с аккуратным, понятным и гибким кодом. Также осмотрели основы и примеры использования конструкторов в объектах Яваскрипт.

Был ли этот урок полезен вам? Дайте нам знать об этом в разделе комментариев ниже.

 

Share

Последние посты

Как выбрать идеальный ноутбук: Полный гайд

Выбор ноутбука может быть сложной задачей в мире, где рынок переполнен вариантами на любой вкус… Читать далее

22/04/2024

Томас Эдисон

Наша самая большая слабость заключается в том, что мы быстро сдаемся. Самый верный способ добиться… Читать далее

20/04/2024

Самые красивые и впечатляющие мосты со всего мира (ТОП-10)

Мост — это нечто большее, чем просто сооружение, соединяющее два берега. Для того, чтобы появился… Читать далее

19/04/2024

Соломон

Жизнь нас учит, что свою пару мы познаем, когда разводимся, своих братьев мы познаем, когда… Читать далее

18/04/2024

Чак Паланик

Кто может — тот делает. Кто не может — тот критикует Чак Паланик   Читать далее

17/04/2024

Ричард Бах

Ни одно желание не дается тебе отдельно от силы, позволяющей его осуществить. Хотя, возможно, для… Читать далее

16/04/2024