我正在尝试使用地理定位将当前纬度和经度添加到我以后可以在应用程序中使用的对象,如下所示:
var loc = {
get_latlong: function() {
var self = this,
update_loc = function(position) {
self.latitude = position.coords.latitude;
self.longitude = position.coords.longitude;
};
win.navigator.geolocation.getCurrentPosition(update_loc);
}
}
当我运行 loc.get_latlong()
然后运行 console.log(loc)
时,我可以在控制台中看到对象、方法和两个属性。
但是,当我尝试 console.log(loc.latitude)
或 console.log(loc.longitude)
时,它是未定义的。
这是怎么回事?
最佳答案
正如其他人提到的,您不能期望异步调用的结果立即到来,您需要使用回调。像这样:
var loc = {
get_latlong: function (callback) {
var self = this,
update_loc = function (position) {
self.latitude = position.coords.latitude;
self.longitude = position.coords.longitude;
callback(self);
}
win.navigator.geolocation.getCurrentPosition(update_loc);
}
}
然后你调用它:
loc.get_latlong(function(loc) {
console.log(loc.latitude);
console.log(loc.longitude);
});
关于JavaScript 对象属性未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17436909/