我已经看到了其他一些问题,关于不同的问题,试图避免在javascript中使用eval()。
使用eval()调用对象方法会导致问题吗?它看起来工作正常!
基本上,我有以下几点:
var object1 = {
left: "this is left",
right: "this is right"
}
我在下拉列表中有一个对象列表,根据选择的对象,我想调用" left"或"对"该物体的财产。
所以我使用:
获取对象名称var objName = document.getElementById("objects").options[document.getElementById("objects").selectedIndex].text.toLowerCase();
//returning, say "object1" from the list
然后我想使用这个变量来调用该对象的属性。我面临的问题是变量是一个字符串,并且为属性返回undefined(" objName.left不是函数")。但是,我发现使用eval()正确地返回了属性,基本上是:
objName.left; //returns undefined
eval(objName).left; //returns "this is left"
就像我说的,这很好但我遇到了一些答案,说避免使用eval()。那么有没有另外一种方法可以做到这一点还是会这样呢?
我还是新手(你可能已经知道了)所以提前感谢您对此查询的任何答案,建议和帮助!
答案 0 :(得分:3)
如果在全局范围内定义了$ ls -l /usr/local/Cellar/solr4/4.10.4/example/solr/collection1/
total 24
-rw-r--r-- 1 me wheel 2146 8 Sep 2014 README.txt
lrwxr-xr-x 1 me wheel 44 7 Jun 13:37 conf -> <path to oscar repo>/sites/demo/deploy/solr
drwxr-xr-x 24 me wheel 816 27 Feb 2015 conf.original
-rw-r--r-- 1 me wheel 16 8 Sep 2014 core.properties
drwxr-xr-x 4 me wheel 136 6 Jun 17:03 data
。您可以使用Bracket notaion
object1
window[objName].left;
&#13;
但是我建议您使用主对象,然后您可以使用括号表示法轻松访问它,即使它未在全局范围内定义。
window.object1 = {
left: "this is left",
right: "this is right"
}
var objName = "object1";
alert(window[objName].left);