我想为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.key_map之前定义 Foo
,因此Foo.DEFAULT_KEY
不是真实的。
设置/使用这些对象常量的正确方法是什么?
答案 0 :(得分:2)
第一个模式出现在我的脑海中:
var Foo = (function() {
var DEFAULT_KEY = "COOKIE_MONSTER";
return {
DEFAULT_KEY: DEFAULT_KEY,
key_map: {
a: DEFAULT_KEY,
b: DEFAULT_KEY
}
}
})();
答案 1 :(得分:1)
您可以使用iife返回所需的对象(命名空间):
var Foo = (function(){
var namespace = {};
namespace.DEFAULT_KEY = 'COOKIE_MONSTER';
namaespace.key_map = {
a : namespace.DEFAULT_KEY,
b : namespace.DEFAULT_KEY
};
return namespace;
})();