Я только что узнал, как лучше организовать мой код 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 перед всеми методами, которые я хочу вызывать, но мне было любопытно: есть ли более относительный способ вызова функций в общем объекте, подобном этому (так же, как выделать с классом на стандартном языке ОО)?Или я вынужден делать это так, как сейчас, просто вызывая методы через имя объекта?