Объекты. Начало игры
JavaScript простым языком
Last updated
Was this helpful?
JavaScript простым языком
Last updated
Was this helpful?
Вначале объекты могут показаться непонятной и ненужной фигней, но, поверь, это далеко не так. Объекты очень крутые ^_^
и будут выручать тебя не раз. Поэтому, эту тему нужно понять максимально хорошо.
Объекты выглядят следующим образом:
Объект всегда имеет такой вид. После знака =
мы должны открыть фигурные скобки {}
и весь код писать внутри них.
name
и age
называются свойствами объекта. В свойства можно записывать данные любых типов: строки, числа, булевы значения, другие объекты, массивы
(о них в следующих уроках).
Но объекты были бы не настолько полезны, если бы не было возможности добавить в них методы. Методы – это функции, которые могут выполнять данный объект. Сейчас все объясню, ты удивишься насколько просто это запомнить =)
Сначала, добавлю метод в существующий объект:
Хочу заметить, что после каждого свойства нужно ставить обязательно запятую, как и после каждого метода, иначе будет ошибка.
Что мы можем теперь сделать с этим объектом? Мы можем запросить любое его свойство или метод:
К свойству или методу можно обращаться через точку, а можно как к элементам массива (о них в следующем уроке). Но, на практике, все-таки, чаще применяют подход вызова через точку. Но у этого вызова есть важный нюанс – свойства и методы должны быть одним словом (без пробелов). Обычно методы имеют название в 2 или 3 слова (как и в нашем случае), поэтому их называют в стиле camelCase
, в нашем случае sayHello
, а не say hello
, или say_hello
.
Итак, чем же отличаются свойства от методов и зачем, вообще, это все нужно?
JavaScript – объектно-ориентированный язык. Может ты где-то читал об этом раньше или слышал. Так вот, объектно-ориентированного подхода в программировании придерживаются почти все программисты. Практически все популярные ЯП являются объектно-ориентированными.
Если говорить простыми словами, то это подход при котором всё с чем ты работаешь нужно представлять в виде объектов.
А мы живем с тобой в мире объектов: компьютер или телефон, с которого ты читаешь данный урок является объектом. У него есть свойства: марка, модель, разрешение экрана;
у него есть методы (функции): звонить, писать, отправлять/принимать какие-то данные и т.д. и т.п
.
Надеюсь ты начинаешь понимать что к чему. В каком-то смысле, данный подход облегчает разработку.
Немного соберу все вместе. Внимательно прочитай и запомни это, чтобы никогда не путать свойства с методами и не путать их предназначение.
Давай мы с тобой замутим объект, который будет представлять собой героя в компьютерной игре.
Итак, что мы знаем о героях из компьютерных игр? У них должны быть минимальные характеристики: здоровье, атака, защита, накопленный опыт, уровень и для того, чтобы он умел ходить, добавим ему в свойства значение координаты, в которой он находится. Ну, и, конечно же, придумаем ему имя. Приступим:
Мы получили героя с именем jsHero
и прописали ему характеристики, которые в объекте
являются свойствами
. Героя мы получили, но вот ни ходить, ни драться, не защищаться, да и, вообще, ничего он делать сейчас не умеет. Он просто стоит и всё. Давайте научим его хотя бы ходить.
Не будем усложнять и сделаем так, чтобы наш герой умел ходить только налево и направо. Вспомните игрушку из детства Super Mario
:
Будем считать, что значение 0
, в свойстве coordinate
соответствует самому левому положению героя. Т.е, если герою нужно будет идти вправо
, то координата будет каждый шаг увеличиваться на единицу, а влево
– уменьшатся на единицу. Итак, создаем методы, которые научат нашего героя ходить:
Теперь наш герой умеет ходить. Для этого нам просто нужно вызвать один из 2-х методов:
Внутри этих методов наверное ты заметил обращение к какой-то непонятной переменной this.coordinate
. С помощью this
мы можем обращаться к свойствам и методам объекта внутри самого объекта. Разберём:
Чтобы внутри метода goRight
обратиться к свойству coordinate
этого же объекта нужно обязательно использовать ключевое слово this
. Если не сделать этого, то получится неприятный сюрприз в виде ошибки:
Ошибка гласит о том, что переменная coordinate
не определена, что и логично. Ведь нигде у нас в коде не существует данной переменной. Существует только одноимённое свойство в объекте и его нужно вызывать только через this.coordinate
.
Итак, ходить научили, давайте для закрепления научим героя атаковать и защищаться:
Теперь для атаки используем этот метод:
За каждый удар, мы будем начислять очки опыта увеличивая значения свойства experience
на 10
единиц.
А для защиты этот:
Итак, подведу небольшой итог.
В свойства записываются какие-либо данные: текст
, числа
, булевы значения
, даты
, массивы
, другие
объекты
.
Методы предназначены для того, чтобы что-то сделать со свойствами: как-либо изменить
, дополнить
, удалить
и так далее.
Используется для обращения к свойствам и методам внутри самого объекта.
Ссылка на живой пример (). Попробуй дописать свои методы и свойства. Вызови их и поделись результатами с другими в комментариях.