获取对象位置内的对象

时间:2016-07-11 03:09:06

标签: javascript

所以我有一个程序,在对象中有对象。我需要稍后访问对象属性,并且我给元素一个名为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创建一个编辑器来更改对象中的值,这是我正在开发的一个项目,用于帮助自己创建分支故事。

1 个答案:

答案 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);