2013-02-25 93 views
4

我想定义一个常数默认值用于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不是真实的东西。
什么是设置/使用这些对象常量的正确方法?

回答

2

来到我的脑海里第一个模式:

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

你可以使用一个iife返回所需的对象空间(namespace):

var Foo = (function(){ 
    var namespace = {}; 

    namespace.DEFAULT_KEY = 'COOKIE_MONSTER'; 

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

    return namespace; 
})();