没有价值可以实现吗?
Is it achievable without eval?
我有这段代码,可以工作:
function getSomeValue(property) {
var obj = {
lvl1: {
lvl2: {
lvl3: 'hi'
}
}
};
//Is it ok to use eval?
return eval('obj.' + property);
}
//I would like to return the value of obj.lvl1.lvl2.lvl3
getSomeValue("lvl1.lvl2.lvl3");
这是我第一次觉得有必要使用eval。邪恶吗?有没有另一种快速的方法来实现这一点?
您不必使用 eval
,例如:
function getSomeValue(property) {
var obj = {
lvl1: {
lvl2: {
lvl3: 'hi'
}
}
},
arr = property.split('.');
return arr.reduce(function(a, b) {
return a[b];
}, obj);
}
document.write(getSomeValue("lvl1.lvl2.lvl3"));
我个人认为这很好,因为您将可以eval
的内容限制为obj
中的内容。
在远程服务器上运行从 AJAX 调用派生的代码或某些其他外部脚本时,使用 eval
是不好的。此外,这里没有更改或操作window
对象,所以我没有看到问题。
假设您将代码作为字符串传递,您必须质疑是否需要这样做以及它为您的应用程序提供了什么价值。但我想,如果你愿意,为什么不呢。
相关文章:
- html表单,它有文本和表,现在我想在一个简单的文本文件中保存和检索数据,如何实现它
- 是否有WebKit的实现可以方便地访问本地文件系统
- Vim-当代码的文字字符串中有括号时,如何实现正确的缩进
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件
- AngularJS:有没有比指定的方法更好的方法来实现这一点
- 有哪些方法可以在html和javascript中实现持久,可共享的存储
- 这个Javascript变量怎么可能有价值
- 如果有价值,则自动提交表单
- 在输入时实现有角度的材料自动完成搜索
- MDN上的polyfill/shim实现有多可靠?
- 这个angular 2的服务实现有什么问题?
- 那些自动执行的匿名函数(又名IIFE)实现有什么区别?
- 通过点击重定向到javascript中有价值的其他页面
- 我的实现有什么问题,使用Date对象的setDate函数
- 检查是否有价值,是否可见
- 如果用户名有价值,请关注密码字段
- javascript持久标头实现有问题
- 单选按钮组在Chrome中有价值,但在Firefox中没有
- PHP,在外部javascript文件之间共享一个有价值的变量
- 如何检查window.history.back在javascript中是否有价值