如何在不直接调用的函数调用中“添加”参数? 具体来说,我有
(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;如何使用修改后的参数列表调用函数但具有相同的上下文。
答案 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');