Javascript Underscore.js _.extend

时间:2014-03-06 22:42:11

标签: javascript underscore.js

我试图通过尝试细分一些代码来学习一些高级的javascript。对于这个函数,我知道它在大多数情况下做了什么,它包含了具有日志记录功能的函数,因此在将来的函数调用中它将注销到控制台。我对underscore.js _.extend感到困惑 - 我知道它想要将属性从源复制到目标。但是我没看到原始函数和 obj [method] 之间有任何区别。我试图检查属性,但没有什么突出的?为什么我们还需要打电话呢?谢谢你的帮助!

function wrapWithLogger (msg, method, obj, color) {
    obj = obj || window;
    color = color || "blue";
    var fn = obj[method];

    obj[method] = function () {
        //console.log('Args: ', arguments);
        var strArgs = _.chain(arguments)
            .toArray(arguments)
            .map(function (arg) {
                if (_.isFunction(arg)) {
                    var fnName = arg.name || "fn";
                    return fnName + "() {...}";
                }
                else if (_.isObject(arg))
                    return "{...}";
                else
                    return JSON.stringify(arg);
            })
            .value()
            .join(", ");
        logWithColor(msg + "(" + strArgs + ")", color);
        return fn && fn.apply(this, arguments);
    };

  **.extend(obj[method], fn);**
}

0 个答案:

没有答案