Я создал диалоговые классы jQuery.
Базовый класс AlertDialog .Дочерним классом является ChildAlertDialog .
Когда создается экземпляр ChildAlertDialog, он принимает elementId (идентификатор DOM) и объект executor (экземпляр MyExcecutor) и отображает диалоговое окно с предупреждением с кнопкой закрытия.
Кнопка закрытия вызывает метод экземпляра MyExecutor executeClose();
Но когда я звоню:
alertbox.displayDialog();
, я получаю ошибку:
executor is undefined
executor.executeClose();
Этоработает, если я передаю executor методу displayDialog ().Так что я немного запутался, потому что он работал бы на другом языке, например, на Java, но JavaScript кажется другим.Должен ли я просто передать executor в displayDialog ()?Или есть способ получше?
------ класс диалога ------------
//base class
function AlertDialog(elementId, executor) {
this.elementId = elementId;
this.height = null;
this.width = null;
this.displayDialog = function() {
$(this.elementId).dialog({
autoOpen: true,
height: this.height,
width: this.width,
buttons: {
'close me': function() {
executor.executeClose(); //ERROR HERE!!!!!
}
}
});
}
//child class
function ChildAlertDialog(elementId, executor) {
this.elementId = elementId;
this.height = 70;
this.width = 400;
}
//inheritance
ChildAlertDialog.prototype = new AlertDialog();
ChildAlertDialog.prototype.constructor = ChildAlertDialog;
Класс, который использует класс ChildAlertDialog.
function MyExcecutor() {
this.execute = function() {
//passing elementID and MyExecutor object to ChildAlertDialog
var alertbox = new ChildAlertDialog("#someDiv",this);
alertbox.displayDialog();
}
this.executeClose = function() {
//do something when the dialog is closed
}
}