相关疑难解决方法(0)

在特定的上下文中调用eval()

我有以下javaScript"class":

A = (function() {
   a = function() { eval(...) };
   A.prototype.b = function(arg1, arg2) { /* do something... */};
})();
Run Code Online (Sandbox Code Playgroud)

现在让我们假设在eval()中我传递的字符串包含调用带有一些参数的表达式:

 b("foo", "bar")
Run Code Online (Sandbox Code Playgroud)

但后来我得到b没有定义的错误.所以我的问题是:如何在A类语境中调用eval?

javascript

46
推荐指数
7
解决办法
4万
查看次数

将eval()限制在狭窄的范围内

我有一个javascript文件,读取另一个文件,其中可能包含需要eval() - ed的javascript片段.脚本片段应该符合javascript的严格子集,这限制了它们可以做什么以及它们可以更改哪些变量,但我想知道是否有某种方法可以通过阻止eval在全局范围内查看变量来强制执行此操作.类似于以下内容:

function safeEval( fragment )
{
    var localVariable = g_Variable;

    {
        // do magic scoping here so that the eval fragment can see localVariable
        // but not g_Variable or anything else outside function scope

        eval( fragment );
    }
}
Run Code Online (Sandbox Code Playgroud)

实际的代码不需要看起来像这样 - 我对任何和所有带闭包的奇怪技巧都是开放的等等.但我确实想知道这是否可能.

javascript eval

31
推荐指数
4
解决办法
2万
查看次数

标签 统计

javascript ×2

eval ×1