如何使用Javascript将本地存储项前置到函数调用

如何使用Javascript将本地存储项前置到函数调用,javascript,function,local-storage,Javascript,Function,Local Storage,我有一个包含变量和函数/方法(?)的对象构造函数。我有几个对象,每个对象都是通过以下方式调用的(每个对象的ID和项目编号都会发生变化): 对象名称和ID相同,当函数运行时,此值也会添加到本地存储中。理论上,我希望获取该值,并在页面重新加载时使用它生成/运行相同的函数(称为onclick) 这听起来很简单,我想串联可以做到。我可以执行[value]+[.apply();]在控制台中获取“item1.apply();”,但无法让浏览器将其识别/作为函数运行 在这被标记为重复问题之前,重新创建动态函数

我有一个包含变量和函数/方法(?)的对象构造函数。我有几个对象,每个对象都是通过以下方式调用的(每个对象的ID和项目编号都会发生变化):

对象名称和ID相同,当函数运行时,此值也会添加到本地存储中。理论上,我希望获取该值,并在页面重新加载时使用它生成/运行相同的函数(称为onclick)

这听起来很简单,我想串联可以做到。我可以执行[value]+[.apply();]在控制台中获取“item1.apply();”,但无法让浏览器将其识别/作为函数运行

在这被标记为重复问题之前,重新创建动态函数等等-我发现的大多数线程似乎比我需要的复杂得多。我试着和他们一起工作,但一事无成。我没有包含更多的代码,因为我不想把看似相对简单的问题复杂化;onload获取值,添加到函数调用,运行。也许有一个简单的解决方案我没有看到(作为一个新手和'所有)

如果不是的话,我希望有人能给我指出正确的方向,因为我被卡住了

提前谢谢

工作代码:

var itemsArray = ["item1", "item2", "item3"];
var currentItem = localStorage.getItem("current", this.value);

if(localStorage.getItem("current") !== null) { // check if local storage item exists

function isMatch(value, index, array) { // run current item thru isMatch 
return value == currentItem; // check if returned value matches currentItem
}   

var result = itemsArray.filter(isMatch); // this will be the matching item in itemsArray

window[result]["applyIt"](); // use the result to concatenate function call
console.log("show me: " + result[0]); // create a string with it
};

根据您的问题,您可以尝试这样做:

window[value][apply]();
就你而言:

window["item1"]["apply"]()

其中,
item1
是全局范围内的函数,
apply
只是
apply

将对象中的
itemN
分组,并使用键访问所需的项:
var items={“item1”:item1,“item2”:item2然后使用
项目
比如:
项目[“item1”]。应用
。我已经给出了一个选项作为答案。提供一些基本代码,以便我们可以帮助您更多。非常感谢您回复我!!有趣的是,我已经有了一个items数组,用来检查检索到的项是否有效(不知道是否严格必要,但这似乎是个好主意)。我没有想过用它来填充函数调用,所以这是一个有用的提醒。不幸的是,我无法让它工作(如果你愿意,可以共享非工作位吗?)。于是,我们转向了Mouser的解决方案,它起了作用。我将编辑我的原始问题以显示结果,如果您有任何进一步的评论,欢迎分享。再次感谢!假设变量是全局的。如果不是呢?你可以假设不是这样,但是你需要对象的名称。最后你们会回到窗口。非常感谢你们的投入,在你们和易卜拉欣之间,我能够让它工作!使用您的建议,我能够连接函数调用,正如我试图做的那样(添加在上面)。令人惊叹的!我不知道为什么窗口[“项目”]。。。已工作,但项目[“项目1”]。。。没有,因为根据您的假设,变量是全局的。或者至少我认为它们是——它们不包含在函数或任何东西中。也许你或@ibrahim可以解释/链接一条线索?再次感谢,非常有帮助!我试着做得很好,把我所有的js代码都移到它自己的外部js文件中,这样更容易调试,也不会弄乱任何现有的代码。但是,现在上述修复不起作用。。。我原以为Mouser的解决方案在引用窗口时仍然有效,但事实并非如此。我如何从一个外部js文件(也许这应该是一个新问题…)使一切工作正常?我试着把它放在js文件中,即不在函数或对象中,我试着把它全部放在函数中,并在窗口或页面加载时调用它,但什么都没有。。。有什么建议吗?
window["item1"]["apply"]()