【问题标题】:Call console.log with apply使用 apply 调用 console.log
【发布时间】:2014-02-12 16:44:06
【问题描述】:

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

我想做的是:

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

【问题讨论】:

标签: javascript


【解决方案1】:

您应该将“控制台”作为应用的上下文:

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

见:http://jsfiddle.net/X6Sn9

【讨论】:

    【解决方案2】:

    试试这个:

    console.debug.apply(console, argArray);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2023-04-08
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多