`Не удается создать экземпляр не-конструктора` Предупреждение о закрытии компилятором? - PullRequest
10 голосов
/ 14 марта 2011

Уважаемые ребята, что мне делать с этими предупреждениями об ошибках, которые выводит Closure Compiler? Большое спасибо за ваши идеи и усовершенствования кода по этому конкретному типу ошибки:

  1. JSC_WRONG_ARGUMENT_COUNT: Функция parseInt: вызывается с 1 аргументом. Функция требует как минимум 2 аргумента (ов) и не более 2 аргумента (ов). в строке 593 символ 12
    if (parseInt(jQuery.browser.version) < 7) {

  2. JSC_NOT_A_CONSTRUCTOR: невозможно создать экземпляр не-конструктора в строке 708, символ 15
    lightbox = new Lightbox(this, opts.lightbox);

  3. JSC_NOT_A_CONSTRUCTOR: невозможно создать экземпляр не-конструктора в строке 1265, символ 19
    var scroller = new Scroller($(this), opts);

Ответы [ 2 ]

18 голосов
/ 14 марта 2011

Номер 1:
Это предупреждение означает, что вы передали неверное количество аргументов в вызове функции.

Здесь - лучшее объяснение

Номер 2 и 3:
Компилятор ожидает, что все конструкторы будут помечены тегом JSDoc @constructor, например:

/**
 * @constructor
 */
function MyClass() {
  this.foo = 'bar';
}
var obj = new MyClass();
alert(obj.foo);

Здесь - лучшее объяснение.

3 голосов
/ 14 марта 2011

Для первого, вам нужно передать два параметра в parseInt: значение и основание.Для 10-значных номеров (в вашем случае) вам нужно (на самом деле не нужно, но вам этого хочется) позвонить

parseInt(jQuery.browser.version, 10)
...