JavaScript: что не так с этим конструктором? - PullRequest
1 голос
/ 05 июля 2010

Я не совсем уверен, как реализовать объекты в JS.

Вот конструктор:

function FooList(arg1, arg2, arg3, arg4, arg5, arg6, arg7)
{
    alert("constructing");
    this._arg1 = arg1;
    this._arg2 = arg2;

    this.refresh();
}

Я пытаюсь вызвать его здесь:

FOO_LIST = new FooList(
    arg1,
    arg2,
    arg3,
    arg4,
    arg5,
    arg6,
    arg7
);

Когда у меня есть все 7 аргументов, это не работает.(Ни одна точка останова в конструкторе не достигнута; предупреждение не срабатывает. Кроме того, метод, содержащий приведенный выше код, перестает выполняться.)

Однако это приводит к срабатыванию предупреждения:

FOO_LIST = new FooList();

Что я здесь не так делаю?

ОБНОВЛЕНИЕ Возможно, это лучший способ определить конструктор:

FooList = function() { }

вместо

function FooList() { }

Однако, даже используя прежний подход, он все равно не работает.

ОБНОВЛЕНИЕ 2: Похоже, комментарии Спинона и Расс Кэма были правильными.Один из аргументов молча провалился, когда я попытался оценить его.

1 Ответ

2 голосов
/ 05 июля 2010

У вас есть запятая после последней arg, которая может вызвать проблемы для движков JavaScript.

Кроме того, было бы лучше использовать var перед FOO_LIST, даже если это намеренно глобальная переменная, так как это хорошая привычка использовать для всех объявлений переменных и избавлять вас отпотенциальные проблемы с перезаписью глобальных переменных в будущем.

Для случаев, когда у вас есть функции со многими параметрами, подобными этим, вы можете использовать объект arguments и индексировать в него, чтобы получить аргументы 1-7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...