所以我有一个程序,在对象中有对象。我需要稍后访问对象属性,并且我给元素一个名为location的属性来保存它。我有一个看起来像这样的大型物体
var story = Object()
story.s1 = {
lore:"Stuff",
choices:[
{name:"Stuff",link:{lore:"Aye",choices:[]}},
{name:"Stuff",link:{lore:"Aye",choices:[]}},
{name:"Stuff",link:{lore:"Aye",choices:[]}}
]
}
现在我所拥有的是一个循环,它获取每个属性并检查它是否具有单独的属性,最终的代码是这样的
story.s1.choices[1].link.lore
这是一个我想作为属性(数据位置或位置)作为字符串放入HTML元素的位置,以便稍后可以编辑该位置。当然,它只是运行代码并给我“Aye”回来,我无法将代码转换为字符串。有任何想法如何把它变成一个字符串?
所以,我想要实现的是将代码转换为未解析的字符串。例如,假设我是0,我想做
story.s1.choices[i].link.lore
到
"story.s1.choices[0].link.lore"
另外,一个很大的复杂问题是我有一个运行复杂代码的循环:
story.eval("s"+i).choices[i].link.choices[i].link.choices[i]... etc.
为什么我需要这一切?我要制作像这样的输入元素
<input location = "Put location string here" oninput = "parse(this.location)"/>
通过JavaScript创建一个编辑器来更改对象中的值,这是我正在开发的一个项目,用于帮助自己创建分支故事。
答案 0 :(得分:1)
而不是代表您的&#34;位置&#34;作为一个字符串,必须创建,然后解开,将其存储为一个函数,当应用于该对象时,它返回所需的&#34;位置&#34;:
function pickValue(obj) {
return obj.s1.choices[0].link.lore;
}
现在你可以传递这个功能,或者将它存储在一个变量中,当时机成熟时,应用来说明
myLore = pickValue(story);
在更高级的注释中,您可以创建一个函数来创建一个函数,该函数可以获得 n 选择的绝杀:
function makeNthPicker(n) {
return function(obj) {
return obj.s1.choices[n].link.lore;
};
}
现在你可以做到
firstPicker = makeNthPicker(0);
console.log(firstPicker(story);