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

Javascript 在对象命名空间中定义和引用常量值?,javascript,namespaces,constants,Javascript,Namespaces,Constants,我想为JS对象定义一个常量默认值,并在同一名称空间的进一步声明中引用它,即la: 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.D

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

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\u映射之前定义,因此
Foo.DEFAULT\u key
不是真实的东西。

设置/使用这些对象常量的正确方法是什么?

您可以使用iife返回所需的对象(命名空间):


我想到的第一个模式是:

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