базовый курс

ГРУППА КУРСА

Объекты

Объекты - это способ оъединения данных. Например, Вы создаёте скрипт, который обрабатывает данные пользователя. Если Вы не используете объекты, то эти данные будут находиться в отдельных переменных - логин, пароль, имя пользователя, почта и так далее. Вы понимаете, что все эти данные относятся к пользователю, но с точки зрения программы, это отдельные переменные и они никак не связаны между собой.

Вместо этого можно создать объект "пользователь" и у него будут свойства - логин, пароль, имя, почта. Смысл свойств такой же, как у переменных: они содержат данные. Но свойства относятся к конкретному объекту. Это уже не отдельные данные, а свойства объекта. Кроме свойств, у объектов есть ещё методы. Метод - это функция. Только эта функция имеет отношение к объекту. Например, у объекта "пользователь" может быть метод, проверяющий, достаточно ли надёжный пароль имеет пользователь. Метод работает не только со свойствами объекта, но и с переменными.

Существуют также классы объектов. Класс содержит одинаковые оъекты, то есть объекты с одним и тем же небором свойств и методов. Например, если скрипт работает с данными не одного пользователя, а сразу нескольких, то можно создать класс "пользователи", который будет содержать объекты "Андрей", "Семён", "Виктор", "Анна". В JavaScript классы реализованы не в полной мере. Но есть языки программирования, в которых объекты невозможно создать без класса. Даже если объект один, то он относится к какому-то классу.

Создание объекта

Самый простой способ создать объект - с помощью фигурных скобок.

имя объекта = { };

Для примера создадим объект с назаванием user.

JavaScript:

+
1
2
3
4
5
6
7
8
<!DOCTYPE html>
<html>
<head>
<title>Страница</title>
<meta charset="utf-8">
</head>
<body>
<script>
9
var user = {};

После того, как объект создан, можно указать его свойства. Свойство объекта в JavaScript пишется так: имя оъбекта, затем через точку без пробелов свойство объекта. Добавим созданному объекту свойства:

10
11
user.name = 'Андрей';
user.profession = 'Юрист';

Свойства объекта можно указать при его создании. При этом они пишутся по-другому. Создадим ещё один объект и добавим ему такие же свойства, как у первого:

12
13
14
15
var obj = {
  name: 'Николай',
  profession: 'Дизайнер'
  };

При таком способе значения свойств указываются после двоеточия, свойства разделаются запятой. Не забывайте ставить точку с зспятой после закрывающей фигурной скобки.

Обращение к свойствам, созданным таким образом осуществляется точно так же, как и к свойствам, указанным после создания объекта. В дальнейшем, этому объекту можно добавить другие свойства.

Есть другой способ создания объекта. Он выгладит сложнее, поэтому используется редко. Но знать его нужно. Для создания объекта используется ключевое слово new. Далее указывается, что создаётся объект и ставятся скобки. Создадим объект таким способом:

16
var myobj = new Object();

Этот объект ничем не отличается от других.

Свойства объекта

Свойства работают так же, как переменные. Можно получить значения свойств и можно присвоить им новые значения. Со свойством объекта можно работать не только внутри методов этого объекта, но и в других частях программы.

Значение свойства может быть любого типа. Свойство может сожержать объект, в том числе, массив. Добавим второму объекту свойство c именем mas и запишем в него массив:

17
obj.mas = [2, 8, 37, 6];

К этому свойству нужно обращаться не как к переменной, а как к массиву. Можно получить или изменить значение любого элемента массива, добавить новые элементы.

К свойству можно обратиться другим способом. При этом пищется имя объекта, а затем в квадратных скобках название свойства. При таком способе, имя свойства это строка, поэтому оно пишется в кавычках. Для примера изменим значение свойства profession второго объекта:

18
obj['profession'] = 'Художник';

Так как имя свойства это строка, то она может содержать разные символы, в том числе, пробелы. Добавим ещё одно свойство:

19
obj['количество отзывов'] = 12;

К такому свойству не возможно обратиться через точку. С ним можно работать с помощью квадратных скобок.

Методы объектов

Метод объекта, эта функция, которая производит какие-то действия, имеющие отношение к объекту. Метод имеет доступ не только к свойствам своего объекта но и к другим данным.

Метод создаётся точно так же, как свойство, только его значением является функция. Для примера создадим метод, который будет выводить значение свойства name объекта user. Так как метод - это функция, то он не запускается сам по себе, его нужно вызвать в коде скрипта.

12
13
14
15
16
user.inf = function ()
  {
  alert(user.name);
  };
user.inf();

Ключевое слово this

Если какой-то метод использует свойство своего объекта, то можно не указавыть имя самого объекта. Вместо этого пишется ключевое слово this. В остальном свойство указывается как обычно: после this ставится точка и пишется имя свойства. Пример:

25
26
27
28
29
obj.inf = function ()
  {
  alert(this.name);
  };
obj.inf();

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

Ссылка на объект

Когда мы создаём переменную, мы задаём ей имя. С переменной всё просто - у неё есть имя и она содержит значение. Но с объектами всё намного сложнее. Когда мы задаём имя объекту, то мы тоже создаём переменную:

21
var myobj = new Object();

Но переменная содержит не сам объект, а ссылку на него. То есть, переменная содержит ключ, с помощью которого происходит обращение к нему, получение и изменение его свойств. Если скопировать переменную, то копируется не ообъект, а ключ. Для примера скопируем ссылку на объект user:

17
var userobject = user;

Теперь есть две переменные, которые содержат ссылку на один и тот же объект. К нему можно обратиться через любую их этих переменных:

18
alert(userobject.name);

Чтобы скопировать сам объект, нужно создать новый и скопировать все свойства и методы