У меня проблема с ключевым словом javascript "this" при использовании в функциональном объекте javascript. Я хочу иметь возможность создать объект для обработки модального всплывающего окна (JQuery UI Dialog).
Объект называется CreateItemModal. Который я хочу иметь возможность создать экземпляр и передать некоторые настройки конфигурации. Одна из настроек конфига. Когда вызывается метод show, отображается диалоговое окно, но кнопка отмены не работает, поскольку this ссылается на объект DOM, а не на объект CreateItemModal.
Как я могу это исправить, или есть лучший подход, чтобы поместить отдельное поведение в отдельные "классы" или "объекты". Я пробовал несколько подходов, включая передачу объекта this в события, но это не похоже на чистое решение.
См. (Упрощенный) код ниже:
function CreateItemModal(config) {
// initialize some variables including $wrapper
};
CreateItemModal.prototype.show = function() {
this.$wrapper.dialog({
buttons: {
// this crashes because this is not the current object here
Cancel: this.close
}
});
};
CreateItemModal.prototype.close = function() {
this.config.$wrapper.dialog('close');
};