Как вызвать метод внутри объекта javascript

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

9
задан joeellis 8 December 2010 в 23:21
поделиться