Javascript 在不进行更改的情况下重写RichFaces PopupPanel.doResizeOrMove方法会导致不一致的行为

Javascript 在不进行更改的情况下重写RichFaces PopupPanel.doResizeOrMove方法会导致不一致的行为,javascript,jsf,richfaces,Javascript,Jsf,Richfaces,我将覆盖RichFaces PopupPanel.doResizeOrMove方法,如下所示: (函数(){ var richfacesuipopupaneldoresizeormove=RichFaces.ui.popupanel.prototype.doResizeOrMove; RichFaces.ui.popupanel.prototype.doResizeOrMove=函数(差异){ 调用(this,diff); }; })(); 最后,我想添加一些附加功能,从而实现覆盖。但是对于上

我将覆盖RichFaces PopupPanel.doResizeOrMove方法,如下所示:

(函数(){
var richfacesuipopupaneldoresizeormove=RichFaces.ui.popupanel.prototype.doResizeOrMove;
RichFaces.ui.popupanel.prototype.doResizeOrMove=函数(差异){
调用(this,diff);
};
})();
最后,我想添加一些附加功能,从而实现覆盖。但是对于上面的代码,我期望与原始方法相同的行为

但是,当我开始移动PopupPanel时,它会快速移出视口。这是javascript通过调用重写的已知问题(我通过apply获得相同的行为)还是某个RichFaces特定的问题?我做错了什么


谢谢doResizeOrMove方法有一个返回值,该值在您的实现中丢失。应该是

return richfacesUiPopupPanelDoResizeOrMove.call(this, diff);
虽然重写原型会起作用,但您可能想看看
$.extend()
,这就是我们用来构建组件的内容

(function() {            
    var richfacesUiPopupPanelDoResizeOrMove = RichFaces.ui.PopupPanel.prototype.doResizeOrMove;      
    $.extend(RichFaces.ui.PopupPanel.prototype, (function(options) {
        return {
            doResizeOrMove: function(diff) {
                return richfacesUiPopupPanelDoResizeOrMove.call(this, diff);
            }
        };
     })());        
 })();

谢谢,成功了!您认为使用$.extend()比重写它有什么好处吗?