如何为函数调用添加额外的参数

时间:2016-08-09 17:24:29

标签: javascript

如何在不直接调用的函数调用中“添加”参数? 具体来说,我有

(function(){
        //I have the context of `that` here
        var oldLog = console.log;
        console.log = function (message) {
            //I want the context of `that` over here too
            oldLog.apply(console, arguments);
        };
})(that);

我正在尝试做这件事我劫持window的控制台,就像接受的答案一样,如下所示:Capturing javascript console.log?

因为必须使用console.log的上下文调用window.console(因为我从那里获取了日志消息),所以我无法控制它是如何被调用的和参数的它通过了。如何将that添加到参数列表中,以便在that被调用时可以console.log

TLDR;如何使用修改后的参数列表调用函数但具有相同的上下文。

1 个答案:

答案 0 :(得分:0)

(function(that){

    function fn(arg1, arg2){
        alert(arg1);
        alert(arg2);
    }

    function callFnWithExtraArg(arg1){

        // `arguments` is not a real array, so `push` wont work.
        // this will turn it in to an array
        var args = Array.prototype.slice.call(arguments)

        // add another argument
        args.push(that)

        // call `fn` with same context
        fn.apply(this, args)
    }

    callFnWithExtraArg('first arg')

})('arg 2');