【发布时间】:2012-09-14 04:13:03
【问题描述】:
我对我正在处理的项目的常量值的快速枚举很感兴趣,但是如果您只想在一个地方存储几个不变的值,那么我在 StackOverflow 上找到的所有内容都过于复杂了你可以重复使用它们。他们还使用对象,这意味着您可以更改它们的值,或者您必须理解并使用可能未在浏览器中实现的“冻结”关键字。
在这里明显使用闭包是个坏主意吗?也许我使用它们太多了,但似乎它们在任何地方都能派上用场。尤其是这里。
var black = new Color3f(0, 0, 0);
var white = new Color3f(1, 1, 1);
var blue = new Color3f(0, 0, 1);
var Colors = {
//insert basic stuff for Color3f objects here
BLACK: function(){
return black;
},
//and so on
};
【问题讨论】:
-
“可行的实施”是什么意思? JS 不像强类型语言那样支持枚举。但是,由于每个对象本身就是一个哈希表,因此您当然可以创建查找对象,但不能阻止某人修改所述查找对象。
-
并不是一个真正的枚举,它意味着顺序,这只是一堆'常量' - stackoverflow.com/a/131286/1097
-
“可行”是指“与我在查看其他问题时看到的任何其他实现一样有用”。但是,如果我对枚举的理解是错误的,正如 Geoff 暗示的那样,那么这可以解释为什么其他答案比仅仅将值包装在闭包中更复杂。
标签: javascript enums closures enumerable