Пусть есть некий класс A, который вы не имеете возможности изменить:
function A () {
this.x = 1;
}
A.prototype.f = function () {
this.x = 2;
}
И требуется дописать некий код в конец метода A.f (не изменяя исходный код, только дополняя). Допустим, надо добавить
this.y = 3;
Я делаю так:
var save_f = A.prototype.f;
A.prototype.f = function () {
this.save_f = save_f;
this.save_f();
delete this.save_f;
this.y = 3;
}
Теперь
var a = new A();
a.f();
a.x; // == 2
a.y; // == 3
Не слишком ли корявое это решение, и можно ли сделать это как-то по-другому?