2

在 PHP 中,每个类都包含一个“神奇”的 __call 函数。使用这个可以动态拦截对一个类的所有调用。例如使用

class TestClass {

    public function __call($functionname, $arguments) {

        .. functionname called 

    }

}

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

JavaScript/Node.js 中是否有类似的可能?是在模块上(由 require 加载)还是在类上?

更新: 感谢所有评论的人。这在纯 JavaScript 中似乎是不可能的。至少目前。

4

1 回答 1

2

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

// 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/

于 2013-08-30T21:38:44.680 回答