Właśnie uczę się, jak najlepiej zorganizować mój kod JavaScript, a miałem pytanie odnośnie tego małego kawałka kodu I napisał:Jak wywołać metodę wewnątrz JavaScript Object
var reportsControllerIndex = {
plotMapPoints: function(data) {
//plots points
},
drawMap: function() {
$.getJSON('/reports.json', function(data) {
reportsControllerIndex.plotMapPoints(data);
});
},
run: function() {
reportsControllerIndex.drawMap();
}
};
pytanie brzmi dotyczące wywoływania innej funkcji ReportControllerIndex z poziomu obiektu reportControllerIndex. Najpierw wypróbowałem następujący fragment kodu dla funkcji uruchamiania:
run: function() {
this.drawMap();
}
który działał idealnie. Ja jednak wtedy szybko znalazł robi to dla funkcji drawMap:
drawMap: function() {
$.getJSON('/reports.json', function(data) {
this.plotMapPoints(data);
});
}
nie działa, ponieważ „to” będzie teraz odnoszą się do funkcji wywołania zwrotnego wywołania getJSON.
Moim rozwiązaniem było umieszczenie raportuControllerIndex przed wszystkimi metodami, które chcę wywołać, ale byłem ciekawy: czy istnieje bardziej względny sposób wywoływania funkcji w ramach całego obiektu takiego jak ten (podobnie jak w przypadku z klasą w standardowym języku OO)? Czy jestem zmuszony zrobić to tak jak obecnie, po prostu wywołując metody poprzez nazwę obiektu?
Ahh, który sprawia, że wiele sensu, dzięki! Czy powiedziałbyś, że ogólnie ta praktyka jest używana w większej ilości kodu javascript niż sugestia Josiaha poniżej? Podoba mi się pomysł wykorzystania "ja" lepiej tylko dla mojego własnego podejścia do OO, ale wolałbym podążać za standardowymi praktykami w świecie JS, gdzie mogę. – joeellis
@japancheese - Nie wierzę, że istnieje konwencja, więc powinieneś używać tego, co lubisz. Pamiętaj tylko, aby imię było uzasadnione. – ChaosPandion