gpt4 book ai didi

javascript - 定义的静态方法未定义

转载 作者:行者123 更新时间:2023-11-30 00:32:16 26 4
gpt4 key购买 nike

我做了一个静态方法geocode()。但是当我调用它时出现错误:

Uncaught TypeError: undefined is not a function

我想不通我在这里做错了什么。

'use strict';

var gMap = (function (window, document, Gmap) {
var gMap;

Gmap.geocode({ 'address': 'Paris, France' }, function (results, status) {
if (status !== Gmap.geocodeStatus.OK) {
throw new Error('Geocode was unsuccessful: ' + status);
}

gMap = new Gmap(document.getElementById('map-canvas'), {
center: results[0].geometry.location,
zoom: 10
});
});

return gMap;
}(window, document, Gmap));

function Gmap(element, options) {
if (!(typeof window.google === 'object' && typeof window.google.maps === 'object')) {
throw Error('The Google Maps JavaScript API v3 library is required.');
}

this.googleMap = new google.maps.Map(element, options);
this.currentLocation = options.center;
this.markers = [];
}

Gmap.geocode = function (geocoderRequest, callback) {
googleGeocoder = new google.maps.Geocoder();

googleGeocoder.geocode(geocoderRequest, function (results, status) {
callback(results, status);
});
};

最佳答案

这是由于 function hoisting 。您的代码中发生的事情是您的 function Gmap(...) 被提升到顶部并在 您的 var gMap = ...,但是您的 Gmap.geocode 是在您的 var gMap 声明之后声明的,因此此时不存在。

要解决这个问题,只需声明Gmap.geocode 上面 var gMap = ...:

Gmap.geocode = function ( ... ) { ... } ;

var gMap = ... ;

关于javascript - 定义的静态方法未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com