我正在尝试将monkeypatching应用于console.log中的PhantomJS:
function doTheMonkey( ){
console._log = console.log; //Typo, was console.log()
console.log = function log( ){
console._log.apply( this , arguments );
return arguments;
}
}
PhantomJS会抱怨<{> 1}}的 TypeError:类型错误
为了深入查看失败的最简单示例,我可以提供:
console._log.apply( this , arguments );
同样,对于function logAndReturn( ){
console.log.apply( this , arguments );
return arguments;
}
这应该可行,我不知道根本原因是什么..
答案 0 :(得分:4)
如另一个答案所述,你应该做
console._log = console.log
然后,当您将arguments
应用于console._log
时,您需要执行
console._log.apply(console, Array.prototype.slice.call(arguments));
arguments
值不是数组。使用slice
创建一个。
答案 1 :(得分:1)
你在第一行调用console.log而不是引用函数,即
console._log = console.log();
应该是
console._log = console.log;