Javascript не может передать параметры в свойство, действующее как функция - PullRequest
0 голосов
/ 15 мая 2010

В настоящее время в упрощенном виде мой код выглядит следующим образом

function AddFileParam(file_id, name, value) {
    uploadcontrol.AddFileParam(file_id, name, value)
}

uploadcontrol = new Upload()

function Upload() {
    //logic
}
Upload.prototype.AddFileParam = function(file_id, name, value) {
    //logic
};

Код выдаёт мне ошибку, поскольку утверждает, что addFileParam не является допустимой функцией. Это вызвано экземпляром функции upload (aka. Uploadcontrol). Это происходит только в Firefox / Chrome, а не в IE. Любые идеи о том, как это исправить?

1 Ответ

0 голосов
/ 15 мая 2010

Если глобальная функция AddFileParam() вызывается до того, как выполнение достигает строки Upload.prototype.AddFileParam= ..., то у прототипа Upload еще не будет метода AddFileParam.

JavaScript выполняется сверху вниз. Исключением является то, что операторы объявления функций, такие как function Upload() {...}, «поднимаются» и определяются до запуска остальной части сценария. Строка Upload.prototype.member=, следующая за этой функцией конструктора, не поднимается и выполняется в обычном порядке сценария.

Хотя вы можете избежать использования функции в скрипте раньше, чем ее определение, это не очень хорошая идея для функций конструктора.

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