现在我有一个原型:
function A() {}
A.prototype.run = function () {
console.log('run 1');
};
鉴于我无法改变A所在的任何地方(无法控制来源)。我想扩展方法run
。不仅记录run 1
,还记录run 2
。我尝试了几种不同的方法,它不起作用。
A.prototype.run = function () {
this.run.call(this);
console.log('run 2');
}
或者
A.prototype.run = function () {
arguments.callee.call(this);
console.log('run 2');
}
任何有此解决方案的人?我宁愿不复制方法run
中的内容。谢谢!
答案 0 :(得分:1)
您可以覆盖run
方法,保存对它的引用;
(function (orig) {
A.prototype.run = function () {
orig.apply(this, arguments);
console.log('run 2');
}
}(A.prototype.run));
这与您的第一次尝试类似,但会保留run
的第一个值,因此您可以在尝试时有效地执行this.run.call(this)
。
答案 1 :(得分:1)
A.prototype._run = A.prototype.run;
A.prototype.run = function () {
this._run.call(this);
console.log('run 2');
}