1

我是面向对象的 JavaScript 新手。我有一个设置方法,我想a)检查一个元素是否为空,如果是,则等待并再次调用自己,b)观察按钮的单击事件。

ErrorBox.prototype.setUpErrorBox = function(btnClientID) {
    if (btnClientID == null) {
        setTimeout("setUpErrorBox()", 1000)
        return;
    }
    Event.observe(btnClientID, 'click', setValSummary);
}

我收到 setUpErrorBox 和 setValSummary 不存在的错误(它们不存在)。我怎样才能引用它们?我试过 this.setValSummary 没有用。

换句话说,我如何在javascript中从同一个类的另一个方法调用一个类的等效方法?

4

1 回答 1

2

使用闭包来保持你的执行上下文:

ErrorBox.prototype.setUpErrorBox = function(btnClientID) 
{
   var box = this; // object context reference
   if (btnClientID == null) 
   {
      // use closure as event handler to maintain context
      setTimeout(function() { box.setUpErrorBox() }, 1000)
      return;
   }
   // again, use closure as event handler to maintain context
   Event.observe(btnClientID, 'click', function() { box.setValSummary() });
}

另请参阅:JavaScript 回调范围

于 2009-02-18T20:50:48.287 回答