可以调用模块或类在node.js / Javascript中截获

在PHP中,每个类都包含一个“magic”__call函数。 使用这个可以dynamic地截取所有对类的调用。 例如使用

class TestClass { public function __call($functionname, $arguments) { .. functionname called } } 

见http://www.php.net/manual/en/language.oop5.overloading.php#object.call

在JavaScript / Node.js中有类似的可能吗? 要么在一个模块(按需求加载)或类?

更新:感谢所有的评论。 这在纯JavaScript中似乎不可行。 至less目前。

  • 正如bfavaretto指出的,这可以通过在Node.js中启用和声代理来完成。 请参阅在nodejs中启用Harmony代理 。
  • 这个问题似乎是调用JavaScript对象时获取通知的重复。
  • 可能相关: __noSuchMethod__ ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod ),标记为非标准。

你可以做这样的事情,虽然它是每个function:

 // original module var module = { myFunc: function(){ /* ... */ } } // "spying" code var originalFunction = module.myFunc; module.myFunc = function(){ // DO SPY STUFF HERE return originalFunction.apply(this, arguments); }; 

http://jsfiddle.net/9eu45/