Показать сообщение отдельно
  #1 (permalink)  
Старый 19.05.2021, 15:17
Аватар для deGeneral
Интересующийся
Отправить личное сообщение для deGeneral Посмотреть профиль Найти все сообщения от deGeneral
 
Регистрация: 27.11.2019
Сообщений: 10

Нюансы прототипного наследования
Всех приветствую!

Ковыряясь в дебрях прототипного наследования, набрел на такую интересную особенность. Вот, например:

function Boss() {
    this.id = 0;
    this.desc = 'Main object'
}

const boss = new Boss();

function SubBoss() {
    this.department = 1;
}
SubBoss.prototype = boss;

subBoss = new SubBoss();

console.dir(SubBoss);
console.log(subBoss);
console.log(subBoss.desc);


Два объекта заданы своими функциями-конструкторами, экземпляры этих объектов - соответственно, через new. Объект SubBoss я хочу прототипно связать с объектом Boss и у меня вопрос: почему для этого я должен обязательно создать экземпляр объекта Boss (boss) и записать в прототип его? А просто связать две функции-конструктора прототипно не судьба? Если я просто напишу SubBoss.prototype = Boss, то последняя строка выдаст в консоль undefined, а свойство subBoss.desc должно унаследоваться.

Что примечательно, если рассмотреть в консоли console.dir(SubBoss), то там в prototype будет записано Boss, а не boss.

Запутался я, в общем, в этих хитросплетениях, помогите наконец-то уложить все это в голове.
Ответить с цитированием