在javascript中,什么是构造函数?什么不是?

时间:2010-10-28 15:13:33

标签: javascript jquery constructor

我正在使用jQuery的插件。它在webkit中运行良好,但是当我在firefox中尝试它时,我得到以下firefox错误:

google.maps.Geocoder is not a constructor
$('.to, .from').geo_autocomplete(new google.maps.Geocoder, { 

以下是所有jquery:

$('.to, .from').geo_autocomplete(new google.maps.Geocoder, {
mapkey: 'ABQIAAAAbnvDoAoYOSW2iqoXiGTpYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQNumU68AwGqjbSNF9YO8NokKst8w', 
selectFirst: false,
minChars: 3,
cacheLength: 50,
width: 235,
scroll: true,
scrollHeight: 330
});

什么是构造函数和firefox如何指出它?

http://dev.resihop.nu是网站

4 个答案:

答案 0 :(得分:6)

构造函数是将new与该函数的名称结合使用时调用的函数(返回函数名称类型的对象),例如:

function Person(name, age) {
   //blah
}

var me = new Person("Jacob", 20);

答案 1 :(得分:5)

任何本机函数都可以作为构造函数调用(即使它不是设计的)。任何不可调用的东西也不能是构造函数。例如new 3给出了同样的错误。

在您的网页中,google.maps.Geocoder只是undefined,这肯定无济于事。查看Google的maps script它未能加载Geocoder模块,因为它正在使用document.write这样做,这个方法必须在解析时从HTML文档中包含的<script>运行,不是像你在这里那样使用DOM脚本导入的。

当然不希望从通过客户端XSLT加载的页面运行。这将给你很多浏览器问题和零搜索引擎优化的存在。这种疯狂的目的是什么?

答案 2 :(得分:1)

您必须使用google.maps.geocoder:

$('.to, .from').geo_autocomplete(new google.maps.Geocoder({
  mapkey:'ABQIAAAAbnvDoAoYOSW2iqoXiGTpYBT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQNumU68AwGqjbSNF9YO8NokKst8w', 
  selectFirst: false,
  minChars: 3,
  cacheLength: 50,
  width: 235,
  scroll: true,
  scrollHeight: 330
}));

答案 3 :(得分:1)

实例化对象时,例如创建一个对象的实例,构造函数是在对象中调用的第一个方法。

当你打电话时

new google.maps.Geocoder

...您正在尝试使用new关键字实例化对象的无参数构造函数。在这种情况下,Geocoder不是可以在没有参数的情况下实例化的类,或者根本不是。