使用apply调用console.log

时间:2014-01-22 14:47:45

标签: javascript

我正在尝试创建一个日志代理,其中每个日志语句都有一个前缀。

我想做的是:

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);它不是那么糟糕,但它不会产生与记录数组相同的结果,而不是记录参数列表。

2 个答案:

答案 0 :(得分:5)

您应该将'console'作为apply的上下文:

var customDebug = function() {
    console.debug.apply(console, arguments);
};

请参阅:http://jsfiddle.net/X6Sn9

答案 1 :(得分:4)

试试这个:

console.debug.apply(console, argArray);