我创造了一个非常简单的原型:
<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'或未定义
请指教!欢迎任何想法!
答案 0 :(得分:1)
在答案的“编辑”部分,我回答了问题1,为了保持一致性,它是:
“var”应该用于定义任何全局变量(感谢Stoive和jfriend00的建议)
关于第二个问题:我的类文件中有另一个语法问题,一旦修复了正确的解决方案(再次,由Stoive建议)帮助:
声明不应该放入构造函数中,应该先声明它来执行。
非常感谢所有人!