这是一个选择,不能完全肯定这是虽然有多可靠,感觉有点不对劲:
(function() {
var oldCall = Function.prototype.call;
var newCall = function(self) {
Function.prototype.call = oldCall;
console.log('Function called:', this.name);
var args = Array.prototype.slice.call(arguments, 1);
Function.prototype.call = newCall;
this.apply(self, args);
}
Function.prototype.call = newCall;
})();
正如你所看到的,它覆盖call
功能 - 这创造了一个小问题当您尝试拨打console.log()
时,您需要将功能交换回去。但它似乎工作!
编辑
由于这是标记的CoffeeScript:
do ->
oldCall = Function::call
newCall = (self) ->
Function::call = oldCall
console.log "Function called: #{this.name}"
args = Array.prototype.slice.call arguments, 1
Function::call = newCall
this.apply self, args
Function::call = newCall
的可能的复制[如何调试的Node.js应用程序?(http://stackoverflow.com/questions/1911015/how-do-i-debug-node-js-应用程序) – Sylar 2016-06-27 16:54:23