在尝试扩展javascript函数时,如何避免过多的递归错误?

时间:2016-01-11 03:29:22

标签: javascript recursion

我在javascript中有一个类,其属性是一个函数。当我尝试重新定义这样的函数时:

myObject.someBehavior = function()
{
  myObject.someBehavior();
  extraLogic();
};

我收到了太多的递归错误"。我理解为什么我得到这个错误,myObject.someBehavior持有对该函数的引用,因此更改函数不会更改引用。所以我的问题是如何避免这种情况?

为了澄清,我正在尝试扩展javascript对象的行为功能。在C#中,我将覆盖该方法,首先调用基类的版本。不确定如何在javascript中执行此操作。

1 个答案:

答案 0 :(得分:2)

您可以使用closures实现此目的。我不确定这对你尝试做什么是一个好主意。你可能最好不要学习how inheritance works in JS

myObject.someBehavior = (function(oldFunction) {
    return function() {
        oldFunction();
        extraLogic();
    };
})(myObject.someBehavior);