这是代码..
function getMilli(){
return new Date().getTime().toString().substr(7,6);
}
console.log = function(p1, p2, p3, p4, p5, p6){
console.log(getMilli(), p1, p2, p3, p4, p5, p6);
}
它以某种方式出现“堆栈溢出”错误,但我不明白为什么在这里......我不是递归迭代的东西(至少我认为)
......呃,是的,我在做递归的东西......但我不知道怎么做。感谢您的答案和伟大的概念。
答案 0 :(得分:4)
你 以递归方式调用函数console.log
。换句话说,您在console.log
内呼叫console.log
。
你可能想做的是:
(function(){
var clog = console.log.bind(console);
console.log = function(p1, p2, p3, p4, p5, p6){
clog(getMilli(), p1, p2, p3, p4, p5, p6);
}
})();
答案 1 :(得分:4)
作为其他有效解决方案的改进:
使用闭包来存储原始console.log
并删除对任意参数声明的依赖:
console.log = function (log) {
return function () {
var args = Array.prototype.slice.call(arguments);
args.unshift(getMillis()); // Push millis as first argument
log.apply(console, args);
};
}(console.log);
答案 2 :(得分:1)
显然你是在console.log
内调用console.log
,因为当你将它重新分配给新功能时,它不会保留与旧功能的链接(为什么要这样?)
你要做的是:
console.old_log = console.log;
console.log = function() {
var args = Array.prototype.slice.call(arguments);
args.unshift(getMilli());
console.old_log.apply(console, args)
}