Javascript 扩展原型方法
现在我有了一个原型,比如:Javascript 扩展原型方法,javascript,prototype,Javascript,Prototype,现在我有了一个原型,比如: function A() {} A.prototype.run = function () { console.log('run 1'); }; 考虑到我无法更改A所在的任何位置(无法控制源)。我想扩展方法run。不仅要记录运行1,还要记录运行2。我尝试了几种不同的方法,但都不起作用 A.prototype.run = function () { this.run.call(this); console.log('run 2'); }
function A() {}
A.prototype.run = function () {
console.log('run 1');
};
考虑到我无法更改A所在的任何位置(无法控制源)。我想扩展方法run
。不仅要记录运行1
,还要记录运行2
。我尝试了几种不同的方法,但都不起作用
A.prototype.run = function () {
this.run.call(this);
console.log('run 2');
}
或
有人能解决这个问题吗?我宁愿不要复制方法
run
中的内容。谢谢 您可以覆盖run
方法,将对它的引用保存为该方法
(function (orig) {
A.prototype.run = function () {
orig.apply(this, arguments);
console.log('run 2');
}
}(A.prototype.run));
这与第一次尝试类似,但保留了run
的第一个值,因此您可以在尝试时有效地执行This.run.call(This)
A.prototype._run = A.prototype.run;
A.prototype.run = function () {
this._run.call(this);
console.log('run 2');
}
A.prototype._run = A.prototype.run;
A.prototype.run = function () {
this._run.call(this);
console.log('run 2');
}