Using eval()...

Using eval()...

本文关键字:eval Using      更新时间:2023-09-26

我已经看到了一些其他的答案,关于不同的问题,尽量避免在javascript中使用eval()。

使用eval()调用对象方法会导致问题吗?它似乎很好用!

基本上,我有以下几行:

var object1 = {
    left: "this is left",
    right: "this is right"
}

我在下拉列表中有一个对象列表,根据选择的对象,我想调用该对象的"左"或"右"属性。

我使用

来获取对象名
var objName = document.getElementById("objects").options[document.getElementById("objects").selectedIndex].text.toLowerCase(); 
//returning, say "object1" from the list

然后我想用这个变量来调用那个对象的属性。我面临的问题是变量是一个字符串,并返回未定义的属性("objName。Left不是一个函数")。然而,我发现使用eval()返回属性是正确的,基本上:

objName.left; //returns undefined
eval(objName).left; //returns "this is left"

就像我说的,这工作得很好,但我遇到了一些回答说要避免eval()。那么,有没有别的方法可以做到这一点,或者这样就可以了?

我仍然是新的(你可能会告诉),所以提前感谢任何答案,建议和帮助这个查询!

如果object1在全局范围内定义。可以使用括号符号

window[objName].left;

window.object1 = {
    left: "this is left",
    right: "this is right"
}
var objName = "object1";
alert(window[objName].left);


然而,我建议你使用主对象,这样你就可以很容易地使用括号符号访问它,即使它没有在全局作用域中定义。

var master = {
    object1: {
        left: "this is left",
        right: "this is right"
    }
}
var objName = "object1";
alert(master[objName].left);