像这样的东西将设置数组 push() 的全局监控。
(function() {
var _push = Array.prototype.push;
Array.prototype.push = function() {
console.log("push");
return _push.apply(this, arguments);
}
})();
否则,正如尼尔建议的那样,您可以创建另一个类。
var MonitoredArray = function() {
var rv = [];
var _push = rv.push;
rv.push = function() {
console.log("push()");
console.log(arguments);
return _push.apply(this, arguments);
}
return rv;
}
一次设置N 个函数调用的基本监控。
var MonitoredArray = function() {
var rv = [];
// the names of the functions we want to log:
var logged_fns = ["push", "pop"];
for (var i in logged_fns) { (function() {
var name = logged_fns[i]
var fn = rv[name];
rv[name] = function() {
console.log(name + "()");
console.log(arguments);
return fn.apply(rv, arguments);
}
})()}
return rv;
}
类似的改编也应该适用于第一个示例。