即使对象将其列为set,也将对象属性读取为undefined

时间:2015-03-20 12:34:45

标签: javascript jquery jquery-widget-factory

我有一个JS Widget,用于从列表中计算出用户当前位置的最近位置(使用lat / long)。

首先,我使用_create()方法尝试通过调用setLocation()方法设置用户位置,然后在继续之前检查坐标是否成功设置。这是setLocation()方法,它不会产生任何错误,但不会导致我的检查超出上述检查范围(if(typeof(this.coords) != 'undefined')) -

/**
 * Set the users current loction (latitude and longitude)
 */
setLocation : function(){

    var t = this;   // This object

    if(navigator.geolocation){  // Ensure that the users location is available

        navigator.geolocation.getCurrentPosition(function(position){    // Set the users current location within this object
            t.coords = {
                latitude:   position.coords.latitude,
                longitude:  position.coords.longitude
            };
        });

    }

}, // getLocation

但奇怪的是,当我console.log(this)时,this.coords被正确设置为对象。但是,console.log(this.coords)会导致输出 undefined

是否有人能够帮助我理解为什么会出现这种情况?

我已在此pastebin中列出了我的完整代码,此处的示例是您如何测试代码 -

$('#closest').closest({
    stations:   new Array(
        {
            "name": "Exeter St David's",
            "code": "EXD",
            "link": "neveryoumindEXD.html",
            "latitude": "50.729342",
            "longitude": "-3.543290"
        },
        {
            "name": "Swindon (Wilts)",
            "code": "SWI",
            "link": "neveryoumindSWI.html",
            "latitude": "51.566828",
            "longitude": "-1.785450"
        }
    )
});

0 个答案:

没有答案