function A() { this.a = 10; }
A.prototype.sayA= function () {};
function B() { this.b = 20; }
B.prototype.sayB= function () {};
function C() {
// Так вызов функции не создает экземпляр.
// Методы прототипов не наследуются
A.call(this);
B.call(this);
// А так метод попадает к свойству "a", а не экземпляру С.
// И сами объекты тут не нужны. Нужны их свойства и методы.
this.a = new A();
this.b = new B();
// Нужно, что-бы этот конструктор мог ничего не знать
// о конструкторах А и В (кроме имен)
}
C.prototype.sayC= function () {};
var c = new C();
function C() {
A.call(this);
B.call(this);
}
Object.assign(C.prototype, A.prototype, B.prototype);