Объекты. Начало игры
JavaScript простым языком

Вначале объекты могут показаться непонятной и ненужной фигней, но, поверь, это далеко не так. Объекты очень крутые ^_^ и будут выручать тебя не раз. Поэтому, эту тему нужно понять максимально хорошо.
Объекты выглядят следующим образом:
Объект всегда имеет такой вид. После знака = мы должны открыть фигурные скобки {}и весь код писать внутри них.
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 единиц.
А для защиты этот:
Ссылка на живой пример (тык). Попробуй дописать свои методы и свойства. Вызови их и поделись результатами с другими в комментариях.
Итак, подведу небольшой итог.
Свойства
В свойства записываются какие-либо данные: текст, числа, булевы значения, даты, массивы, другие объекты.
Методы
Методы предназначены для того, чтобы что-то сделать со свойствами: как-либо изменить, дополнить, удалить и так далее.
Ключевое слово this
Используется для обращения к свойствам и методам внутри самого объекта.
Last updated
Was this helpful?