Классы в JavaScript


В предыдущей теме мы пришли вот к такому образцу кода

function Animal(name, voice) {
this.name = name;
this.voice = voice;
}

Animal.prototype.say = function() {
console.log(this.name, 'says', this.voice)
}

const dog = new Animal('dog', 'woof');

dog.say(); // dog says woof

С появлением в JavaScript классов писать подобный код стало удобнее

class Animal {
  constructor(name, voice) {
    this.name = name;
    this.voice = voice; 
  }
  say() {
    console.log(this.name, 'says', this.voice)
  }
}

const dog = new Animal('dog', 'woof');
dog.say();

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

На основе базового класса Animal  мы можем создавать дочерние классы и добавлять им новые свойства