1

すべての定数変数だけを含むクラスを定義するにはどうすればよいですか? 最近、Constatns クラスで定義された値 ("Blue Car") として、Constants.Car などの他のクラスから自分の定数を参照することができます。言ってみましょう: 車 = 定数クラスの「青い車」。

4

2 に答える 2

2

私は次のことについて少し偏執的であるため、少し過剰に設計されたソリューションを使用してきました。

  1. 誰かが実際に定数を誤って変更し、多くのものを台無しにしています
  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 に答える