javascript - 避免在此模块中进行评估

标签 javascript eval

我有这个存储一堆变量的模块模式。我想创建一个可以返回任何给定 var 的函数(真正的模块具有真正的功能——这只是一个精简版)。

var myObject = (function() {
  var _savings = '100',
      _year = new Date().getFullYear(),
      _phone = '1-800-555-1234';

return {
  getMe: function(param) {
    return eval(param);
}

一个示例用法是 myObject.getMe('phone'); 会弹出“1-800-555-1234”

我想避免使用 eval(),因为它太邪恶了。

谢谢!

最佳答案

在 javascript 中,object.field 等同于 object["field"]

现在,这里的问题是您创建了一些不属于对象的私有(private)变量,因此访问它们会很棘手。

另一种方法是这样的:

var myObject = (function() {
  var _privates = {
    savings: '100',
    year: new Date().getFullYear(),
    phone: '1-800-555-1234'
  };

return {
  getMe: function(param) {
    return _privates[param];
  }
}())

关于javascript - 避免在此模块中进行评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11160590/

相关文章:

javascript - 单击按钮时评估用户 JS 语法

javascript - 单击按钮时元素未隐藏

python - eval 锁不起作用

PHP - 来自数据库的评估代码

javascript - 单击带有 selenium 的 javascript 链接

javascript - getScript 或 eval 在特定位置?

php - 关于 PHP 5 中 eval 的问题

javascript - 为什么在有效索引位置删除时 splice 方法返回 undefined?

php - FireFox 和 IE Jquery 不工作

javascript - Safari 浏览器 keydown 事件不起作用