Полный цикл в digital

Наследование объектов

JavaScript поддерживает наследование, позволяя нам при создании новых типов объектов при необходимости унаследовать их функционал от уже существующих. Например, у нас может быть объект User, представляющий отдельного пользователя. И также может быть объект Employee, который представляет работника. Но работник также может являться пользователем и поэтому должен иметь все его свойства и методы:

// конструктор пользователя
function User (name, age) {
this.name = name;
this.age = age;
this.go = function(){document.write(this.name + " идет 
");} this.displayInfo = function(){ document.write("Имя: " + this.name + "; возраст: " + this.age + "
"); }; } User.prototype.maxage = 110; // конструктор работника function Employee(name, age, comp){ User.call(this, name, age); this.company = comp; this.displayInfo = function(){ document.write("Имя: " + this.name + "; возраст: " + this.age + "; компания: " + this.company + "
"); }; } Employee.prototype = Object.create(User.prototype); var tom = new User("Том", 26); var bill = new Employee("Билл", 32, "Google"); tom.go(); bill.go(); tom.displayInfo(); bill.displayInfo(); console.log(bill.maxage);

Здесь в начале определяет конструктор User и к его прототипу добавляется свойство maxage. Затем определяется тип Employee. В конструкторе Employee происходит обращение к конструктору User с помощью вызова:

User.call(this, name, age);

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

Employee.prototype = Object.create(User.prototype);

Метод Object.create() позволяет создать объект прототипа User, который затем присваивается прототипу Employee. При этом при необходимости в прототипе Employee мы также можем определить дополнительные свойства и методы.

При наследовании мы можем переопределять наследуемый функционал. Например, Employee переопределяет метод displayInfo(), унаследованный от User, чтобы включить в вывод этого метода новое свойство company.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг