是否可以使用 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) })()'); })()
打印出当前窗口对象
关于javascript - 在隔离环境中使用 eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461423/