可以调用模块或类在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); };