如何通过对象传递回调结果?

时间:2010-04-13 13:42:40

标签: javascript oop

我正在执行Google本地搜索,并希望通过对象返回lat / long。 Google搜索本身运行正常。

在对象本身中检查(使用console.log或alert())时,结果字段似乎已填充好。

但是,在检查对象的实例(在运行回调之前实例化)时,结果为空。我知道我不需要访问器功能 - 最终结果是相同的。

这里有什么基本缺失吗?谢谢!

function GeoSearch() {  

    this.results = [];  

    this.searchComplete = function(localSearch) {  

        if(localSearch.results[0]) {  
            var resultLat = localSearch.results[0].lat;  
            var resultLng = localSearch.results[0].lng;  

            this.results = localSearch.results[0].lat;  
        }

     }

    this.getResults = function() {   
        return this.results;   
    }  

}  

function populateCoords(postcode) {  
     var localSearch = new google.search.LocalSearch();  
     var gs = new GeoSearch();  

     localSearch.setSearchCompleteCallback(gs, gs.searchComplete, [localSearch]);  
     localSearch.execute(postcode + ", UK");  

     alert(gs.getResults());  
}

1 个答案:

答案 0 :(得分:1)

当您引用函数gs.searchComplete时,您将从该对象所属的对象中分离该方法。将其切换为function () { gs.searchComplete(); }