不使用 Eval 动态引用 Javascript 数组名称?

Posted

技术标签:

【中文标题】不使用 Eval 动态引用 Javascript 数组名称?【英文标题】:Dynamically referencing Javascript Array name without using Eval? 【发布时间】:2010-11-07 13:47:47 【问题描述】:

鉴于 EVAL 是邪恶的,我该如何动态创建数组名称:

我有一堆数组,我需要根据用户点击的内容引用不同的数组。

这段代码给了我数组对象:

(eval(calendarObject.id + '7'))

但是eval不好,我该如何构造一个Array名字然后引用呢?

这里有更多上下文:

if (jQuery.inArray(String(checkinDate.getTime()/1000), 
(eval(calendarObject.id + '7'))) == -1 )  //do stuff ;

有什么想法吗?

谢谢。

【问题讨论】:

【参考方案1】:

它是一个全局变量,它将是窗口对象的一个​​属性:

window[calendarObject.id + '7']

【讨论】:

我仍然无法弄清楚 OP 想要什么,但我认为你更接近了 最好重写它,使其成为不同对象的属性,而不是将其保留为全局对象。 @annakata - 当我的页面是通过 php 构建时,它会写出一组数组(ctg7、gdn7、twr7 等)然后我需要根据用户点击的内容访问这些值浏览器。无论如何,@Greg 有答案。非常感谢 :) @David Dorward - 是的,我想我会的,但它现在正在工作:)

以上是关于不使用 Eval 动态引用 Javascript 数组名称?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中eval函数

javascript动态声明变量。

JavaScript 为啥不要使用 eval

不使用eval,按字符串名称访问命名空间的javascript对象

XSS小记:Javascript 中 eval 与 fetch组合在攻击场景中的使用

JavaScript,在公共方法中将私有函数作为字符串调用,而不使用 eval(显示模式)