Logo

Developer learning path

JavaScript

Наследование в JavaScript

Наследование

56

#description

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

В JavaScript наследование осуществляется путем создания цепочки объектов, связанных между собой через свойство prototype. Каждый объект имеет ссылку на свой объект-прототип, который служит как шаблон для наследования свойств и методов.

Для создания объекта-прототипа в JavaScript используется функция-конструктор. Она задает свойства и методы объекта, которые будут наследоваться другими объектами. Чтобы создать подкласс, необходимо создать новую функцию-конструктор, которая будет наследоваться от родительской функции-конструктора.

Для связи прототипа объекта с его функцией-конструктором используется свойство prototype.

Например, можно создать функцию-конструктор для родительского объекта:

                    
function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayName = function() {
  console.log("My name is " + this.name);
}
                  

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

                    
function Employee(name, age, salary) {
  Person.call(this, name, age);
  this.salary = salary;
}

Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee;

Employee.prototype.saySalary = function() {
  console.log("My salary is " + this.salary);
}
                  

Здесь мы наследуем свойства name и age от родительской функции-конструктора Person, а также добавляем новое свойство salary. Наследование методов осуществляется путем создания нового объекта-прототипа с помощью метода Object.create и установки его в качестве прототипа подкласса.

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

March 25, 2023

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

Если же непонятен весь вопрос, то нажмите на кнопки внизу, чтобы получить новый вариант объяснения, практические примеры или критически оценить сам вопрос.