如何定义一个类只包含所有常量变量?这么晚我可以从Constants.Car中的任何其他类引用我的常量作为Constatns类中定义的值(“Blue Car”)。让我们说:常量类中的Car =“Blue Car”。
答案 0 :(得分: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,可能有一种方法可以颠覆这一点,但希望它可以抵御常见错误。
答案 1 :(得分:1)
我会模仿dojo/keys