var a = {
c:1
}
var c =2;
with(a){
console.log(c); //等价于c.a
}
所以,第一步改写上面的new Function(),将里面变量的获取途径控制在自己的手里...为了解决这个问题,则需要使用: proxy
proxy
es6 提供的Proxy特性,说起来也是蛮牛逼的. 可以将获取对象上的所有方式改写.具体用法可以参考: 超好用的proxy....WeakMap 主要的问题在于,他可以完美的实现,内部变量和外部的内容的统一. WeakMap最大的特点在于,他存储的值是不会被垃圾回收机制关注的....(当然,你也可以使用new Function, 这个随你...) 这里的框架是使用postMessage+eval. 一个用来通信,一个用来执行. 先看代码:
<!....页面和其打开的新窗口的数据传递
2.多窗口之间消息传递
3.页面与嵌套的iframe消息传递
具体的格式为:
otherWindow.postMessage(message, targetOrigin