无法使JavaScript在JavaScript中的不同文件/类中可用

时间:2012-03-19 04:29:11

标签: javascript enums

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

<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>

执行结果是:

  

Day Names Enumerator = 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>

我收到了一个错误:

  

未捕获的ReferenceError:未定义天数

问题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>

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

  

未捕获的TypeError:无法读取属性'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 />");

错误仍然相同:

  

未捕获的TypeError:无法读取属性'friday'或未定义

请指教!欢迎任何想法!

1 个答案:

答案 0 :(得分:1)

在答案的“编辑”部分,我回答了问题1,为了保持一致性,它是:

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

关于第二个问题:我的类文件中有另一个语法问题,一旦修复了正确的解决方案(再次,由Stoive建议)帮助:

声明不应该放入构造函数中,应该先声明它来执行。

非常感谢所有人!