Я просто узнать о том, как лучше организовать свой код яваскрипта, и у меня возник вопрос по поводу этой небольшой кусок кода, который я написал:Как вызвать метод внутри объектов 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);
});
}
не работает, так как «это» теперь будет ссылаться на функцию обратного вызова вызова getJSON.
Мое решение состояло в том, чтобы просто поставить reportsControllerIndex перед всеми методами, которые я хочу вызвать, но мне было любопытно: существует ли более относительный способ вызова функций внутри общего объекта, подобного этому (как и вы, с классом в стандартном языке OO)? Или я вынужден сделать это, как и сейчас, просто вызывая методы через имя объекта?
Ahh, что делает много смысла, спасибо! Скажете ли вы, что в целом эта практика используется в более чем javascript-коде, чем предложение Йосианы ниже? Мне нравится идея использовать «я» лучше только для моего собственного мышления ОО, но я предпочел бы следовать стандартным практикам в мире JS, где я могу. – joeellis 2010-12-08 23:37:28