我是面向对象的javascript的新手。我有一个设置方法,我想a)检查一个元素是否为null,如果是,请等待并再次调用自己b)观察按钮的click事件。
ErrorBox.prototype.setUpErrorBox = function(btnClientID) {
if (btnClientID == null) {
setTimeout("setUpErrorBox()", 1000)
return;
}
Event.observe(btnClientID, 'click', setValSummary);
}
我遇到的错误是setUpErrorBox和setValSummary不存在(他们没有)。我怎样才能参考它们?我试过了.setValSummary,但没有用。
换句话说,如何在javascript中从同一个类的另一个方法调用类的方法的等价物?
答案 0 :(得分: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() });
}