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

我正在使用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是该网站

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

在您的网页中, google.maps.Geocoder只是undefined ,这当然无济于事。 查看Google的地图脚本,它无法加载Geocoder模块,因为它使用document.write来执行此操作,这个方法必须在解析时从HTML文档中包含的运行,而不是使用DOM脚本导入就像你在这里做的那样。

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

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

 function Person(name, age) { //blah } var me = new Person("Jacob", 20); 

你可以像这样使用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 })); 

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

当你打电话的时候

 new google.maps.Geocoder 

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