我是面向对象的javascript的新手。我有一个设置方法,我想要a)检查元素是否为null,如果是,则等待并再次调用自身,b)观察按钮的click事件。
ErrorBox.prototype.setUpErrorBox = function(btnClientID) {
if (btnClientID == null) {
setTimeout("setUpErrorBox()", 1000)
return;
}
Event.observe(btnClientID, 'click', setValSummary);
}
我收到setUpErrorBox和setValSummary不存在的错误(它们不存在)。如何引用它们?我尝试了this.setValSummary这是行不通的。
换句话说,如何在javascript中从同一个类的另一个方法调用一个类的方法的等效项?
最佳答案
使用闭包保留执行上下文:
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 Callback Scope