Невозможно сделать перечисления работоспособными для разных файлов / классов в JavaScript - PullRequest
0 голосов
/ 19 марта 2012

Я создал довольно простой прототип:

<script type="text/javascript">
    Days = { "sunday": 0, "monday": 1, "tuesday": 3, "wednesday": 4,
        "thursday": 5, "friday": 6, "saturday": 7 };
    alert("Day Names Enumerator=" + Days.friday);
</script>

Результат выполнения:

Перечислитель имен дней = 6

Как только я переместил определение enum в другой файл

File1.js:

    Days = { "sunday": 0, "monday": 1, "tuesday": 3, "wednesday": 4,
        "thursday": 5, "friday": 6, "saturday": 7 };

file2.html

<script type="text/javascript" src="File1.js"></script>
<script type="text/javascript">
    alert("Day Names Enumerator=" + Days.friday);
</script>

Я получил ошибку:

Uncaught ReferenceError: Дни не определены

Вопрос1 : в чем проблема с этим подходом? Я видел много рекомендаций относительно перечислений в JS, но ничего об использовании их из разных файлов

В самом конце я бы хотел, чтобы мой enum был частью класса, описанного в File1:

function File1Class(){
    this.prototype.Days2 = { "sunday": 0, "monday": 1, "tuesday": 3, "wednesday": 4,
        "thursday": 5, "friday": 6, "saturday": 7 };
}

и используйте его так:

<script type="text/javascript" src="File1.js"></script>
<script type="text/javascript">
    alert("Day Names Enumerator=" + File1Class.Days2.friday);
</script>

Но я все еще получил довольно похожую ошибку:

Uncaught TypeError: Невозможно прочитать свойство «пятница» или не определено

Вопрос2: Как использовать enum, определенный внутри класса? Опять же, я видел много рекомендаций относительно перечислений и классов в JS, но ничего об их использовании

Пожалуйста, сообщите, любые отзывы приветствуются.

Заранее большое спасибо.

EDIT:

Почему вы, ребята, не отвечаете? Это помогло бы всем (я думаю, что, по крайней мере, я смогу как-то проголосовать и наградить вас).

Что касается первого вопроса: я добавил объявление 'var' перед 'Днями', и это позволило получить доступ к его значениям из другого файла.

Большое спасибо!

Что касается второго: похоже, я должен переместить объявление Days2 из конструктора класса, чтобы оно выполнялось. Я сделал это: поместил это перед объявлением класса, после ... но все еще не могу даже вызвать это от самого класса:

File1Class.prototype.Days2 = { "sunday": 0, "monday": 1, "tuesday": 3, "wednesday": 4,
    "thursday": 5, "friday": 6, "saturday": 7 };
function File1Class(value) {
    this.value = value;
    alert(1);
    alert("<b>From class internals:</b> " + File1Class.prototype.Days2.friday + "<br />");

Ошибка все та же:

Uncaught TypeError: Невозможно прочитать свойство «пятница» или не определено

Пожалуйста, сообщите! Любые идеи приветствуются!

1 Ответ

1 голос
/ 20 марта 2012

В разделе «РЕДАКТИРОВАТЬ» ответа я ответил на вопрос 1, для согласованности:

"var" должен использоваться для определения любой глобальной переменной (спасибо Stoive и jfriend00 за предложение)

Что касается 2-го вопроса: у меня была другая проблема с синтаксисом в моем файле класса, как только она была исправлена, помогло правильное решение (опять же, предложенное Stoive):

объявление не должно быть помещено в конструктор, оно должно быть объявлено ранее для выполнения.

Большое спасибо всем!

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