$.getJSON выполняется асинхронно. Есть 2 пути.
1. Хороший путь: передавать callback-функцию аргументом в .getCoords().
var obj = {
getCoords: function(callback) {
var self = this;
$.getJSON('data.json', function(data) {
self.setArrays(data.array);
callback(data);
});
}
};
obj.getCoords(function (arr) {
console.log(arr);
});
2. Плохой путь: использовать $.ajax с параметров async: false. Это легче, но пока будет идти вызов, весь JavaScript и UI браузера будет висеть.
3. Добрый путь: использовать
Promise