May 31, 2023

Наследование и прототипы

Вместо классов в JavaScript есть прототипы. В нем используется система, называемая протиповым наследованием. Помните, что в JavaScript все является объектом, а не классом.

Наследование достигается путем указания свойства __proto__ объекта на другой объект. Лучший способ сделать это - с помощью функции Object.create()

“Класс” Animal

function Animal (name) {
  this.name = name
}

Наделите всех будущих Animal этой функцией

Animal.prototype.greet = function () {
  console.log(`Hello, my name is ${this.name}`)
}

Cat “класс”

function Cat (name, breed) {
  // Привязка имени к родительскому объекту animal
  Animal.call(this, name)
  this.breed = 'tabby'
}

метод создания Объекта позволяет объектам наследоваться от других

Cat.prototype = Object.create(Animal.prototype)

Cat.prototype.purr = function () {
  console.log('puuurrrrr')
}

Nora имеет доступ ко всем методам у Cats и Animals

const nora = new Cat('Nora')
nora.greet()
nora.purr()
$ node jsbyexample.js
 Hello, my name is Nora
 puuurrrrr

Подробнее

Далее: классы es6