Конструкторы объектов

Последнее обновление: 27.03.2018

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

var tom = new Object();

После создания переменной tom она будет вести себя как объект типа Object.

Конструктор позволяет определить новый тип объекта. Тип представляет собой абстрактное описание или шаблон объекта. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке - наличие двух рук, двух ног, головы, пищеварительной, нервной системы и т.д. Есть некоторый шаблон - этот шаблон можно назвать типом. Реально же существующий человек является объектом этого типа.

Определение типа может состоять из функции конструктора, методов и свойств.

Для начала определим конструктор:

function User(pName, pAge) {
	this.name = pName;
	this.age = pAge;
	this.displayInfo = function(){
		document.write("Имя: " + this.name + "; возраст: " + this.age + "<br/>");
	};
}

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

this.name = pName;

В данном случае устанавливаются два свойства name и age и один метод displayInfo.

Как правило, названия конструкторы в отличие от названий обычных функций начинаются с большой буквы.

После этого в программе мы можем определить объект типа User и использовать его свойства и методы:

var tom = new User("Том", 26);
console.log(tom.name); // Том
tom.displayInfo();

Чтобы вызвать конструктор, то есть создать объект типа User, надо использовать ключевое слово new.

Подобным образом мы можем определить и другие типы и использовать их вместе:

// конструктор типа Car
function Car(mName, mYear){
	this.name = mName;
	this.year = mYear;
	this.getCarInfo = function(){
		document.write("Модель: " + this.name + "  Год выпуска: " + this.year + "<br/>");
	};
};
// конструктор типа User
function User(pName, pAge) {
	this.name = pName;
	this.age = pAge;
	this.driveCar = function(car){
		document.write(this.name + " ведет машину " + car.name + "<br/>");
	};
	this.displayInfo = function(){
		document.write("Имя: " + this.name + "; возраст: " + this.age + "<br/>");
	};
};

var tom = new User("Том", 26);
tom.displayInfo();
var bently = new Car("Бентли", 2004);
tom.driveCar(bently);

Оператор instanceof

Оператор instanceof позволяет проверить, с помощью какого конструктора создан объект. Если объект создан с помощью определенного конструктора, то оператор возвращает true:

var tom = new User("Том", 26);

var isUser = tom instanceof User;
var isCar = tom instanceof Car;
console.log(isUser); 	// true
console.log(isCar); 	// false
Помощь сайту
WebMoney
  • P378451176208
  • Z280152397659
ЮMoney/Яндекс-Деньги
  • 410011174743222
PayPal
  • metanit22@mail.ru
Перевод на карту
  • Номер карты: 4048415020898850