来自之前的question ,我有以下内容:
所以我已经实现了一个资源类,现在我想继续扩展它并添加我所有的常量和枚举(或者在 JS 允许的范围内......)。
这是我目前拥有的:
var resources = {
// images
player : new c_resource("res/player.png"),
enemies : new c_resource("res/enemies.png"),
tilemap : new c_resource("res/tilemap.png")
};
这就是我想继续将其扩展到:
var resources = {
// images
player : new c_resource("res/player.png"),
enemies : new c_resource("res/enemies.png"),
tilemap : new c_resource("res/tilemap.png"),
// enums
directions : {up:0, right:1, down:2, left:3},
speeds : {slow: 1, medium: 3, fast: 5}
};
...
function enemies() {
this.dir = resources.directions.down; // initialize to down
}
当我尝试访问 resources.directions.up 时,我的 JS 脚本变成了一堆燃烧着的代码。在此上下文中是否允许枚举,如果不允许,我如何正确插入它们以在正常函数之外使用?我也尝试将它们定义为全局的,以达到类似的效果。
编辑:修复了逗号...这只是转录时的一个错误。
当我在 Firefox 中运行它并查看控制台时,我收到一条错误消息,提示 resources is undefined
。
资源“类”定义在我脚本的顶部,function enemys()
紧随其后……所以据我所知,它应该仍在范围内……
最佳答案
enemies
的调用堆栈是什么?你可以这样做:
var foo = {
bar: 1,
f_rv: f()
};
function f() {
return foo.bar;
}
因为您可以在使用它们的代码“下方”声明函数,所以它会工作一半,但稍后会失败,因为 f()
尝试使用未构造的 foo
此刻。
关于javascript - 继续 JavaScript "classes"- 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4620745/