Объекты являются одной из самых важных и мощных функций JavaScript, и во многих встроенных функциях объекты используются по умолчанию.
По сути, объект — это совокупность свойств, а свойство состоит из ключа (идентификатора) и значения. В этом смысле объекты в JavaScript похожи на ассоциативные массивы в PHP, но на этом сходство кончается.
В предыдущем уроке мы рассмотрели переменные в 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 часто кроется огромная сила.
Давайте немного вернемся назад и научимся создавать простые объекты и управлять ими. Вот основные правила по объектам:
объект{…}
;
Теперь давайте создадим более сложный тестовый объект, содержащий некоторую полезную информацию, которой мы будем манипулировать:
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, чтобы получить необходимое для полного прочтения книги количество часов.
Пока наш код выше неплохой, но он может быть гораздо лучшим. К примеру, когда нам нужно будет создать несколько объектов с одинаковой структурой. Здесь на помощь и приходят конструкторы. Если вы знакомы с объектно-ориентированным 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 и узнали, как начать с ними работать. На примерах увидели, как можно использовать объекты для создания структур данных с аккуратным, понятным и гибким кодом. Также осмотрели основы и примеры использования конструкторов в объектах Яваскрипт.
Был ли этот урок полезен вам? Дайте нам знать об этом в разделе комментариев ниже.
Учеба за границей уже давно ассоциируется с качественным образованием, новыми возможностями и множеством перспектив. Но…
Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…
Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…
Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер
Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…
Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…