PhantomJS中的Monkey-patching console.log

时间:2014-05-15 13:30:40

标签: javascript phantomjs monkeypatching

我正在尝试将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; }

TypeError:类型错误会失败

这应该可行,我不知道根本原因是什么..

2 个答案:

答案 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;