我如何定义一个只包含所有常量变量的类?这么晚了,我只能将我的常量从任何其他类(如 Constants.Car)中引用为在 Constatns 类中定义的值(“Blue Car”)。让我们说: Car = Constants 类中的“Blue Car”。
问问题
748 次
2 回答
2
我一直在使用一个稍微过度设计的解决方案,因为我有点偏执:
- 有人实际上意外地改变了常量并搞砸了很多东西
- 有人试图访问一个不存在的常量但没有得到明显的错误
所以常量模块看起来像:
define(["dojo/_base/lang"], function(lang){
// Variable is private, never directly exposed to outside world
var constants = {
FOO : "alpha",
BAR : "beta"
};
// If the name of a constant is given, return the associated variable.
// If not, return all constants, but return a COPY so that potential
// damage is limited.
return function(cname){
if(typeof cname == "undefined"){
// Copy of our protected object
return lang.clone(constants);
}else{
// Value of a particular thing
if(constants.hasOwnProperty(cname)){
return constants[cname];
}else{
throw "Constant '"+cname+"' does not exist.";
}
}
};
});
要使用这些常量,我会:
require(["package/my/constants"],function(myconstants){
var x = myconstants("FOO"); // Should be "alpha"
var y = myconstants(); // Should be {FOO:"alpha",BAR:"beta"}
}
鉴于它是 Javascript,可能有一种方法可以颠覆这一点,但希望它能够抵抗常见错误。
于 2013-09-04T22:00:26.550 回答
1
我会模仿所做的事情dojo/keys
于 2013-09-04T16:03:24.037 回答