我正在尝试创建一个日志代理,其中每个日志语句都有一个前缀。
我想做的是:
customDebug("xxx","yyy");
在木头之下它会做:
console.debug("prefix","xxx","yyy");
我试图用这种方式实现它:
prefixLogArguments: function(arg) {
var array = _.toArray(arg);
array.unshift( this.getPrefix() );
return array;
},
customDebug: function() {
var argArray = this.prefixLogArguments(arguments);
console.debug.apply(undefined, argArray );
},
它说Uncaught TypeError: Illegal invocation
因为看起来我们无法使用apply/call
调用本机代码,即使使用未定义的上下文也是如此。
有人可以告诉我如何实现这个目标吗?
我可以做console.debug(argArray);
它不是那么糟糕,但它不会产生与记录数组相同的结果,而不是记录参数列表。
答案 0 :(得分:5)
您应该将'console'作为apply的上下文:
var customDebug = function() {
console.debug.apply(console, arguments);
};
答案 1 :(得分:4)
试试这个:
console.debug.apply(console, argArray);