我在javascript中有一个类,其属性是一个函数。当我尝试重新定义这样的函数时:
myObject.someBehavior = function()
{
myObject.someBehavior();
extraLogic();
};
我收到了太多的递归错误"。我理解为什么我得到这个错误,myObject.someBehavior持有对该函数的引用,因此更改函数不会更改引用。所以我的问题是如何避免这种情况?
为了澄清,我正在尝试扩展javascript对象的行为功能。在C#中,我将覆盖该方法,首先调用基类的版本。不确定如何在javascript中执行此操作。
答案 0 :(得分:2)
您可以使用closures实现此目的。我不确定这对你尝试做什么是一个好主意。你可能最好不要学习how inheritance works in JS。
myObject.someBehavior = (function(oldFunction) {
return function() {
oldFunction();
extraLogic();
};
})(myObject.someBehavior);