Создание собственных объектов в Javascript

Создание собственных объектов в Javascript

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы говорили про свойство constructor. В данной статье я бы хотел поговорить про создание собственных объектов в Javascript. Кроме встроенных классов-конструкторов, в JavaScript встроено создание пользовательских классов-конструкторов. Что из себя представляют такие классы и для чего они нужны, попробуем разобраться на следующем примере:

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

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

function Auto(x, y, z, t) {
   this.brand = x; // марка
   this.model = y; // модель
   this.year = z; // год выпуска
   this.color = t; // цвет
   this.showInfo = function() {
      alert("Марка автомобиля: " + this.brand + "\nМодель автомобиля: " + this.model + "\nГод выпуска: " + this.year + "\nЦвет: " + this.color); 
   }
}
var auto1 = new Auto("Nissan", "X-Trail", 2013, "Black"); // создаём объекта класса Auto
auto1.showInfo(); // выводим информацию об объекте

Ключевое слово "this" указывает на новый создаваемый объект, т.е. оно указывает на конкретный экземпляр класса.

Если проверить свойство "constructor" у созданной переменной (auto1.constructor), то оно покажет:

function Auto(x, y, z, t) { 
   код функции целиком 
}

В данной небольшой статье мы написали свой класс-конструктор, который будет создавать наши пользовательские объекты.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *