Javascript:函数用传递参数覆盖

时间:2014-07-16 08:32:53

标签: javascript node.js

我正在使用Winston(Logger for nodejs)。

在我的剧本中,我打电话:

log.error("my error", {input: [1,2]});

控制台告诉我:

error: my error input=[1, 2]

我想做什么:不要在log.error上调用(null)

在某些函数中,我使用变量动态调用log.error,并且不知道变量是NULL还是具有值。如果我调用log.error(null),他会将“error:”写入控制台。

我试过这个:

log.error = (function () {
    var old = log.error;

    return function newerror() {
        if (arguments.length !== 0) {
            old(arguments);
        }
    };
})();

但现在我得到了:

error: 0=my error, input=[1, 2]

作为输出。

我的问题

如何使用给定的die参数调用log.error()函数(javascript中的arguments-var是一个对象)。

功能样式:

function foo(arg1,arg2,...)

我想要类似的东西:

foo.call(myargumentsobj);

1 个答案:

答案 0 :(得分:0)

哦,我明白了:

old.apply(this, arguments);