在对象命名空间中定义和引用常量值是什么?

5
我希望您能为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
  }
};

FooFoo.key_map之前不会被定义,因此Foo.DEFAULT_KEY不是真实存在的。
如何正确设置/使用这些对象常量?

2个回答

2
我首先想到的模式是:
var Foo = (function() {
    var DEFAULT_KEY = "COOKIE_MONSTER";
    return {
        DEFAULT_KEY: DEFAULT_KEY,
        key_map: {
            a: DEFAULT_KEY,
            b: DEFAULT_KEY
        }
    }
})();

1
你可以使用立即执行函数来返回所需的对象(命名空间):
var Foo = (function(){
    var namespace = {};

    namespace.DEFAULT_KEY = 'COOKIE_MONSTER';

    namaespace.key_map = {
        a : namespace.DEFAULT_KEY, 
        b : namespace.DEFAULT_KEY
    };

    return namespace; 
})();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接