Позвольте мне начать с признания, что я нуб в JavaScript. Таким образом, вопрос может быть не очень разумным в основе и может не хватать достаточно информации, чтобы помочь мне.
Задний план
В моей организации есть внутренняя среда разработки для JavaScript на основе Eclipse. Все, что нам нужно сделать, это написать скрипты на JavaScript и напрямую их выполнить. Я предполагаю, что он использует Rhino, так как я видел его в трассировке стека некоторых исключений.
Мой код работает с 3 файлами ".js".
Сценарий-1: объявить глобальные переменные и создать их как объекты Java.
importClass(java.util.HashMap);
var hmTCResult = new HashMap();
Script-2: Выполните некоторые действия, используя глобальные переменные из Script-1.
Script-2.prototype.run = function() {
hmTCResult.put("Result", "Fail");
};
changeStatus = function(strStatus){
hmTCResult.put("Result", strStatus);
};
Script-3: функция вызова в Script-2, которая использует глобальные переменные
changeStatus("Pass")
Определение проблемы
Когда из Script-3 я вызываю функцию в Script-2, кажется, что переменные экземпляра не выбираются, и моя функция дает сбой, т. Е. Я получаю исключение «hmTCResult не установлен для экземпляра объекта». Обратите внимание, что эта же переменная hmTCResult хорошо работает в Скрипте 1.
Я кое-что прочитал о Scope и Context в JavaScript, но не смог разобраться в этом, так как я не вижу его явно в IDE.
Я буду рад предоставить дополнительную информацию, если это необходимо.
Script-2
не является допустимым идентификатором JavaScript. Назовите егоScript2
илиScript_2
. - person J. K.   schedule 21.10.2012hmTCResult
на самом деле не является глобальной переменной, какchangeStatus
. Возможно, ваша среда сценариев (я не знаю, как запускаются ваши три файла сценариев) выполняет все в масштабе всего файла. Попробуйте удалить ключевое словоvar
или явно назначитьhmTCResult
вашему глобальному объекту. - person Bergi   schedule 21.10.2012