接下来,我们来一步一步分析,如果做到在前端的沙箱.文末 看俺有没有心情放一个彩蛋吧。..."username")); // will print "Mulder"
console.log(auth.eval("password")); // will print "trustno1"
那有没有什么办法可以解决...那有没有办法解决global var的办法呢? 有啊... 只是有点复杂先用with,在用Proxy
with
with这个特性,也算是一个比较鸡肋的,他和eval并列为js两大SB特性....这里,主要是通过Symbol.unscopables 这个特性来检测的.比如:
Object.keys(Array.prototype[Symbol.unscopables]);
// ["copyWithin...(反正不是100%就行)
设置缓存
如果上代码,每次编译一次code时,都会实例一次Proxy, 这样做会比较损性能. 所以,我们这里,可以使用closure来进行缓存。