Javascript 对象内部引用声明
我正在寻找一种快捷方式,将字典中的值用作字典内部的引用。代码显示了我的意思:Javascript 对象内部引用声明,javascript,Javascript,我正在寻找一种快捷方式,将字典中的值用作字典内部的引用。代码显示了我的意思: var dict = { 'entrance':{ 'rate1': 5, 'rate2':10, 'rate3':20, }, 'movies':{ 'theDarkKnight':{ '00:00':<entrance.rate1>, '18:00':<entr
var dict = {
'entrance':{
'rate1': 5,
'rate2':10,
'rate3':20,
},
'movies':{
'theDarkKnight':{
'00:00':<entrance.rate1>,
'18:00':<entrance.rate2>,
'21:00':<entrance.rate3>
},
...
};
var dict={
“入口”:{
“比率1”:5,
“比率2”:10,
“比率3”:20,
},
‘电影’{
“黑暗骑士”:{
'00:00':,
'18:00':,
'21:00':
},
...
};
有什么鬼鬼祟祟的方法吗?没有。你能做的最好的方法是:
var dict = {
'entrance' : {
'rate1' : 5,
'rate2' : 10,
'rate3' : 20,
}
};
dict.movies = {
'theDarkKnight' : {
'00:00' : dict.entrance.rate1,
'18:00' : dict.entrance.rate2,
'21:00' : dict.entrance.rate3
},
...
};
您可以使用json并将其定义为“mustache模板”,然后运行mustache来呈现模板。考虑到如果您有嵌套的依赖项,则需要运行(n)次。在这种情况下,您有3个依赖项ABC-->AB-->a
var mustache = require('mustache');
var obj = {
A : 'A',
AB : '{{A}}' + 'B',
ABC : '{{AB}}' + 'C'
}
function render(stringTemplate){
while(thereAreStillMustacheTags(stringTemplate)){
stringTemplate = mustache.render(stringTemplate, JSON.parse(stringTemplate));
}
return stringTemplate;
}
function thereAreStillMustacheTags(stringTemplate){
if(stringTemplate.indexOf('{{')!=-1)
return true;
return false;
}
console.log(render(JSON.stringify(obj)));
输出为:
{"A":"A","AB":"AB","ABC":"ABC"}
不幸的是,JSON不支持递归/自引用。这不是JSON。您是在使用文字语法创建对象时询问自引用吗?还是说希望指定的值随引用值的更改而自动更新?因为它不是JSON,所以可以使用函数或属性获取程序来设置其他属性的当前值。@Cerbrus:No…JSON!=JavaScript。JSON语法类似于(并基于)JavaScript的文字符号,但这就是相似性结束的地方。它们是两个非常不同的东西。@Cerbrus:It更像是“独立于语言的数据结构符号”。如果是JSON,它最终是Unicode文本数据。由于与JavaScript的文字符号相似,在大多数情况下,您可以使用
eval()
将JSON数据字符串处理到JavaScript程序中,但它最终是一种独立于平台的数据交换格式…有点像XML。可能重复