PavelScron
@PavelScron

Как раньше в es5 создавался подкласс(subclass)?

Когда не было class extends, что использовалось? Какой код стандартный под это дело был?

Просто call использовали?

Вот смотрю код из es5 и не понимаю зачем тут Object.create

var Person5 = function(name, yearOfBirth, job) {
    this.name = name;
    this.yearOfBirth = yearOfBirth;
    this.job = job;
}

Person5.prototype.calculateAge = function() {
    var age = new Date().getFullYear() - this.yearOfBirth;
    console.log(age);
}

var Athlete5 = function(name, yearOfBirth, job, olymicGames, medals) {
    Person5.call(this, name, yearOfBirth, job);
    this.olymicGames = olymicGames;
    this.medals = medals;
}

Athlete5.prototype = Object.create(Person5.prototype);
  • Вопрос задан
  • 191 просмотр
Решения вопроса 2
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
В JS никогда не было, да и сейчас нет классового наследования, как и самих классов. Это всё синтаксический сахар, не более.
В JS есть прототипное наследование. В 2 словах о нём не расскажешь, но в контексте вопроса - Object.create(Person5.prototype) создаёт новый пустой объект с прототипом Person5.prototype. Т.о. ему с рождения становятся доступны свойства и методы прототипа.
// создаём новый экземпляр Athlete5
var ch = new Athlete5();
// проверяем в нём наличие доступа к методу Person5.prototype
console.log(ch.calculateAge);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
22 янв. 2021, в 13:01
300 руб./за проект
22 янв. 2021, в 12:59
3000 руб./за проект
22 янв. 2021, в 12:40
5000 руб./за проект