В javascript, что такое конструктор?А что нет? - PullRequest
2 голосов
/ 28 октября 2010

Я использую плагин для 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 ]

6 голосов
/ 28 октября 2010

Конструктор - это функция (которая возвращает объект типа имени функции), которая вызывается при использовании new в сочетании с именем этой функции, например:

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

var me = new Person("Jacob", 20);
5 голосов
/ 28 октября 2010

Любая встроенная функция может быть вызвана как конструктор (даже если она не предназначена для этого).Все, что не вызывается, также не может быть конструктором.например, new 3 выдает ту же ошибку.

На вашей странице google.maps.Geocoder - это просто undefined, что, безусловно, не поможет.Глядя на скрипт карт Google , он не может загрузить модуль Geocoder, потому что для этого используется document.write, метод, который должен запускаться из <script>, включенного в документ HTML во время разбора, а неимпортируется с использованием сценариев DOM, как вы здесь делаете.

Он, конечно, не ожидает запуска со страницы, загруженной через клиентский XSLT.Это даст вам множество проблем с браузером и нулевое присутствие SEO.Какова цель этого безумия?

1 голос
/ 28 октября 2010

Когда вы создаете экземпляр объекта, например, создаете экземпляр объекта, конструктор является первым методом, который вызывается внутри вашего объекта.

Когда вы вызываете

new google.maps.Geocoder

... вы пытаетесь создать беспараметрический конструктор объекта с помощью ключевого слова new.В этом случае Geocoder не является классом, который может быть создан без параметров или вообще.

1 голос
/ 28 октября 2010

Вы просто используете 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
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...