Я только изучаю, как лучше всего организовать свой код javascript, и у меня возник вопрос относительно этого небольшого фрагмента кода, который я написал:
var reportsControllerIndex = {
plotMapPoints: function(data) {
//plots points
},
drawMap: function() {
$.getJSON('/reports.json', function(data) {
reportsControllerIndex.plotMapPoints(data);
});
},
run: function() {
reportsControllerIndex.drawMap();
}
};
Вопрос касается вызова другой функции reportsControllerIndex из объекта reportsControllerIndex. Сначала я попробовал следующий фрагмент кода для функции запуска:
run: function() {
this.drawMap();
}
, который работал отлично. Однако затем я быстро обнаружил, что это делается для функции drawMap:
drawMap: function() {
$.getJSON('/reports.json', function(data) {
this.plotMapPoints(data);
});
}
не работает, так как "this" теперь будет относиться к функции обратного вызова вызова getJSON.
Мое решение заключалось в том, чтобы просто поместить reportsControllerIndex перед всеми методами, которые я хочу вызвать, но мне было любопытно: есть ли более относительный способ вызова функций в таком общем объекте, как этот (так же, как если бы вы сделали с класс на стандартном ОО-языке)? Или я вынужден делать это, как сейчас, просто вызывая методы по имени объекта?