【问题标题】:Define and reference constant value in object namespace?在对象命名空间中定义和引用常量值?
【发布时间】:2013-02-11 02:58:28
【问题描述】:

我想为一个 JS 对象定义一个常量默认值,并在同一个命名空间的进一步声明中引用它,例如:

var Foo = {
  // 'constant' value for default key 
  DEFAULT_KEY : "COOKIE_MONSTER",

  // a map declaration that should ideally reference the default key 
  key_map : {
    a : Foo.DEFAULT_KEY, 
    b : Foo.DEFAULT_KEY
  }
};

Foo 不会在 Foo.key_map 之前定义,因此 Foo.DEFAULT_KEY 不是真实的。
设置/使用这些对象常量的正确方法是什么?

【问题讨论】:

    标签: javascript namespaces constants


    【解决方案1】:

    我想到的第一个模式:

    var Foo = (function() {
        var DEFAULT_KEY = "COOKIE_MONSTER";
        return {
            DEFAULT_KEY: DEFAULT_KEY,
            key_map: {
                a: DEFAULT_KEY,
                b: DEFAULT_KEY
            }
        }
    })();
    

    【讨论】:

      【解决方案2】:

      你可以使用 iife 来返回你想要的对象(命名空间):

      var Foo = (function(){
          var namespace = {};
      
          namespace.DEFAULT_KEY = 'COOKIE_MONSTER';
      
          namaespace.key_map = {
              a : namespace.DEFAULT_KEY, 
              b : namespace.DEFAULT_KEY
          };
      
          return namespace; 
      })();
      

      【讨论】:

        猜你喜欢
        • 2013-06-03
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        • 2016-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多