Альтернативное задание прототипа в главе "Примеси"
Здравствуйте! В главе "Примеси" https://learn.javascript.ru/mixins в третьем сверху блоке кода в комментарии написано, что "или мы можем использовать Object.create для задания прототипа". Хотелось бы увидеть, как это возможно реализовать, для начинающих это совсем не очевидно. Сколько я ни пытался, мне это не удалось сделать. Попытка создать примесь с прототипом с помощью Object.create выбрасывает в конечном итоге (при дальнейшем вызове new User().sayHi() ) ошибку TypeError: (intermediate value).say is not a function. Вот такое решение я пробовал:
let sayHiMixin = {
sayHi() {
super.say(`Hi, my name is ${this.name}`)
},
sayBye() {
super.say(`Bye, ${this.name}`)
}
}
sayHiMixin = Object.create(sayMixin, Object.getOwnPropertyDescriptors(sayHiMixin))
Также игрался с разными вариантами "создать пустой объект с прототипом, потом добавить в него свойства" - это все тоже не работает. Возможно, потому, что создаются именно свойства-функции, а не методы (в учебнике есть об этом упоминание)? А как же тогда решить с помощью Object.create?
P.S. Стабильно работает решение с прямым указанием прототипа для sayHiMixin через __proto__ и Object.setPrototypeOf()