我正在尝试删除此函数中的 eval 语句。我习惯了 this[whatever] 样式替换,但在这种情况下它不起作用。 看看:
var App = (function(fw) {
var somevar1 = "hello";
var somevar2 = "world";
this.get = function(what) {
return eval(what);
}
});
var app = new App({some: "thing"});
// now for the use:
console.log(app.get("somevar1"),app);
在该函数中,我所有正常的“eval擦洗”选项都不起作用,例如,我无法使用:
return this[what]
return [what]
return app[what]
return new Function(what);
这肯定不是需要 eval 的奇怪情况吗? .. ps 我必须注意,我无法重新调整 App 内变量的范围,因为它是庞大代码库的一部分。
这里有一些需要摆弄的东西:
最佳答案
不幸的是,你运气不好; eval
是唯一可以访问此类变量的东西。下次不要再这样做了:)
您可以通过保留data
对象来开始迁移:
var App = (function(fw) {
var data = {
somevar1: "hello",
somevar2: "world"
};
this.get = function(what) {
return data[what];
};
});
然后在您看到的整个代码库中逐步执行此操作。它不应该破坏任何东西。
关于javascript - 替换私有(private)范围变量中的 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9986382/