JavaScript 对象属性未定义

标签 javascript object geolocation

我正在尝试使用地理定位将当前纬度和经度添加到我以后可以在应用程序中使用的对象,如下所示:

    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/

相关文章:

javascript - Javascript 中 setter 和 getter 定义风格的区别

javascript - PHP - RSS - 地理定位

javascript - 光标在 WKWebView 中的位置,在 iOS 中有一个可编辑的段落

javascript - 将 CSS 应用于事件路由器链接 [Angular 2]

javascript - 使用 html 和 javascript 的客户端数据存储和检索

c++ - 将数字合并到对象的名称

javascript - Object.observe/unobserve 如何与垃圾回收交互?

javascript - 如何将 HTML 字符串转换为纯文本并将其附加到 JavaScript 中的 DIV 中?

javascript - navigator.geolocation.getCurrentPosition 不起作用

java - Fragment webView无法检测到Google map (您的位置)