【发布时间】:2014-10-10 21:55:26
【问题描述】:
其实整个问题。一种反猴子补丁。如何获取原始对象(对象、数组、函数、字符串等)及其原型,如果它们已更改\扩展\删除?
我现在看到的唯一选项 - 它是框架的动态创建 - 拉出他的原生对象 - 动态移除框架。在 Web Workers 的帮助下,也许同样可以做到。但是它们ie> 9,其中没有类DOM,并且本身与动态框架相同。
框架示例
delete Object.prototype.constructor;
delete Object;
console.log(window.__proto__.__proto__.__proto__.constructor); // undefined
// console.log(Object); // undefined
var frame = document.createElement('frame');
document.all[0].appendChild(frame);
var Object = frames[0].Object;
document.all[0].removeChild(frame);
console.log(Object);
这个理论问题。 例如,我们正在开发一个嵌入式库,并且不知道它什么时候会被调用,所以当它被调用时,原生浏览器对象可以被改变。我们需要什么来获取原始对象,初始环境。
也许还有其他方法可以解决?
提前致谢。
【问题讨论】:
-
不是,不是。我说如果用户愚蠢到添加执行此操作的脚本,那是他们的问题。当然,其中一些可以从剩余的函数中检索到,而另一些则不能。
标签: javascript prototype monkeypatching