删除javascript中变量的eval并获取备用代码
有来自其他人的代码,有一些删除javascript中变量的eval并获取备用代码,javascript,Javascript,有来自其他人的代码,有一些eval用法如下: var obj1 = null; var obj2 = null; var obj3 = null; //... after many lines ... var idx=3; //get from UI, from user selection, etc. ** var curObj = eval('obj'+idx); // now curObj is one of obj1,obj2,obj3 //using curObj below
eval
用法如下:
var obj1 = null;
var obj2 = null;
var obj3 = null;
//... after many lines ...
var idx=3; //get from UI, from user selection, etc.
** var curObj = eval('obj'+idx); // now curObj is one of obj1,obj2,obj3
//using curObj below
问题:如何删除**行中的eval
部分,并找到对idx
值动态获取obj1
,obj2
,obj3
进行最小修改的替换
更新1
已尝试按如下方式添加阵列:
var obj1 = null;
var obj2 = null;
var obj3 = null;
[+] var objArray = [obj1, obj2, obj3];
但是这样一来,objArray
是一个常量数组,而不是参考数组,每当我跟踪objArray
时,值都是[null,null,null]
;我知道,如果我在任何时候更新obj1-3
我也应该更新objArray
,但这并不实际,因为代码中有太多的赋值
可以随时显示正确的
objArray
工作代码以动态获取obj1-3
?我会使用数组并将这些对象按相同顺序放置如果最初的程序员正在做这种事情,代码很可能充满了其他不良做法。如果它是你的选择,考虑改写代码的这一部分。拥有表格的多个变量<代码> SothTimeX >代码> > <代码>是一个使用数组的强有力的指示器。了解数组:。您不会显示您对objX
所做的操作,但您只需将对这些变量的任何引用替换为objArray[X]
,或者至少对对象本身进行变异(假设值将是对象),而不是为变量指定新值。