Добрый вечер!
Столкнулся с такой проблемой. Имеется два класса, у каждого из них есть свой прототип.
Нужно, вызвав конструктор одного класса, расширить атрибуты этого класса и его прототип с другого. Попробую на примере показать:
//Foo - это класс, с которого нужно расширить
function Foo() {
this.foo = 'foo';
return this;
}
Foo.prototype = {
constructor: Foo,
fooFunction: function() {
console.log(this.foo);
}
}
//Bar - это класс, в который нужно "влить" Foo
function Bar() {
this.bar = 'bar';
//Изменение контекста решает проблему с "влить" атрибуты и Foo
//this.bar == 'bar'; this.foo == 'foo';
Foo.apply(this, arguments);
return this;
}
Bar.prototype = {
constructor: Bar,
//Вот как сюда получить методы с Foo?
barFunction: function() {
console.log(this.bar);
}
}
Задача стоит следующая. Нужно "смерджить" эти два класса в Bar вместе с его атрибутами и прототипом. В итоге я хочу получить класс Bar, в котором есть методы fooFunction и barFunction в прототипе и this.foo, this.bar в атрибутах. Таким образом после "слияния" можем сделать так:
var bar = new Bar();
bar.foo == 'foo';
bar.bar == 'bar';
bar.fooFunction() == 'foo';
bar.barFunction() == 'bar';
Каким паттерном это можно реализовать?
Заранее благодарю.