我对Java语言方法的替代问题感到困惑了一段时间。问题是我在控件之一上设置了onclick事件处理程序,并且在事件处理程序触发实际方法之前,我需要注入(inject)一些方法。

假设DGrid.Headerclik实际上分配给了onclick事件。

这就是我所做的

  DGrid.Headerclik  = handleinLocal;

因此,每当用户单击网格时,控件就会进入handleinLocal方法。在这里,我必须进行一些处理,然后调用基本Headerclik()。
  function handleinLocal(){
      // here i need to call the DGrid.Headerclik() method (base)
  }

但这不能按预期工作。在handleinLocal()中调用DGrid.Headerclik()时,将递归调用handleinLocal()方法。但是我需要调用基本方法...

有没有办法在JavaScript中实现theis?

最佳答案

您应该将先前的处理程序存储在(关闭)变量中:

(function() {
   var oldHandler = DGrid.Headerclik;

   DGrid.Headerclik = handleInLocal;

   function handleInLocal() {
      // ...
      oldHandler();
      // ...
   }
})();

09-25 18:39