如题:假设我这边需要执行一个系统外传入的函数,但又害怕函数访问到系统内的变量导致随意更改。
如何让函数访问不到内部的变量?(只访问到指定的,系统传入的变量)
如:
var a = 1
var actions = {
getA(){
return a
}
}
// eval中运行的就是系统外传入的函数
// 如何让它能访问到actions,而访问不到a?
// eval只是演示,能实现效果就行
eval('function(){alert(a)}')
10:26补充
可以用Function方式,运行动态函数。各方面都挺符合的,但是访问指定变量需要用this。
补充:用Function照样还是可以访问全局作用域的....
new Function('console.log(this)').apply({a:1})
访问a需要用this,有没有可以不用this直接使用a的方式?
这里使用 eval 能访问到 a 和 actions 的原因其实很简单:
可以参考如下方式
另外 new Function 的方式其实是支持传参数的