可以't使enum在JavaScript中跨不同的文件/类工作

Can't make enums workable across different file/class in JavaScript

本文关键字:文件 工作 JavaScript enum 可以      更新时间:2023-09-26

我创建了一个非常简单的原型:

<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

一旦我将枚举定义移动到另一个文件中

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>

我收到一个错误:

未捕获引用错误:未定义天数

问题1:这种方法有什么问题?我在JS中看到了很多关于枚举的建议,但没有从不同的文件中使用它们

最后,我希望我的枚举是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>

但我仍然收到了类似的错误:

未捕获的类型错误:无法读取属性"friday"或未定义的

问题2:如何使用类内部定义的枚举?同样,我在JS中看到了很多关于枚举和类的建议,但没有看到关于同时使用它们的

请告知,欢迎任何反馈。

提前非常感谢。

编辑:

你们为什么不回答?这对所有人都有帮助(我相信,至少我能投票并以某种方式奖励你)。

关于第一个问题:我在"Days"之前添加了"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 />");

错误仍然相同:

未捕获的类型错误:无法读取属性"friday"或未定义的

请告知!欢迎有任何想法!

在回答问题1的"EDIT"部分,为了一致性,它是:

"var"应用于定义任何全局变量(感谢Stoive和jfriend00的建议)

关于第二个问题:我的类文件中有另一个语法问题,一旦解决了,正确的解决方案(同样是Stoive提出的)会有所帮助:

声明不应放入构造函数中,应提前声明以便执行

非常感谢大家!