在孤立环境中使用eval()

Using eval() in isolated environment

本文关键字:eval 环境      更新时间:2023-09-26

是否有可能使用eval()来评估JavaScript代码并确定该代码将无法访问某些对象?

例子:

(function(window, location){ eval('console.log(window, location)'); })()

上面的代码似乎没有通过引用直接访问window对象,因为它在该作用域中是undefined。但是,如果全局存在另一个对象,并且它包含对window的引用,那么它将是可访问的。

如果我向window, location添加任何其他对象或变量,可能包含对window的引用,那么计算的代码是否能够引用window对象?

我试图创建一个平台,用户应用程序可以上传与js文件和访问特定的api将以权限的形式给出。

在JavaScript中,任何全局调用的函数(即不在对象上)都将其this参数设置为全局对象(在浏览器中是窗口)。那么这个片段:

(function(window, lovation) { eval('(function () { console.log(this) })()'); })()

打印当前窗口对象