Using eval()...
Using eval()...
我已经看到了一些其他的答案,关于不同的问题,尽量避免在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);
相关文章:
- 如何通过引用var Using DataTables来进行分页或排序
- 递归使用 eval() 是检查程序执行的好方法吗?
- 为什么忽略了eval()代码中的语法错误
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- Javascript eval()无法处理传递的字符串
- 调用绕过eval()的函数
- Semi-sandboxing Javascript eval
- Object.prototype using 'this'
- ES6 模板文字是否比 eval 更安全
- JavaScript 可以在这里使用 eval 吗?
- using LocalStorage ionic 2
- jQuery Replacing, Using arrays
- Using jQuery with classes from ES6
- Dropdownlist using javascript
- 如何使用uglifyjs/uglifyjs2解析walk和eval javascript表达式
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- 当eval只执行服务器端数据时,在javascript中使用eval是否安全
- 使用eval()定义变量显示未定义的错误
- Using eval()...
- Using eval with `with`