//第一种 补环境的方法

let test1 = {
name:"小红"
}; test = new Proxy(test1,{
get(target,key){
console.log("获取了",key + "属性");
return target[key];
}
})
test.name //实战应用(注释部分的内容倒着看) //然后继续代理,按照这种的思路。继续的寻找,不但代理对象,获取里面的属性或者方法。然后检测其返回值。
//特点是每次只能检测一个,所以,补完每一个级别的对象之后,都需要重新的进行检测
canvas = {} let document = {
createElement:function (val) {
if (val = "canvas"){
return canvas
//到浏览器中看一看需要输入哪些内容
} }
};
//返回的是一个document对象,那么就设置一个空对象,看一看从这个空对象里面取了哪些值 //找到确是环境中缺失的属性之后,然后再函数中不传参数,但是打印参数。通过这样的方式来获取环境中使用的参数
// let document = {
// createElement:function () {
// console.log(arguments)
// }
// }; document = new Proxy(document,{
get(target,key){
console.log("获取了",key + "属性");
return target[key];
}
})
document.createElement()
//就可以检测这里面调用了document中的哪些属性 //进阶的使用
//吐环境
function proxy(proxy_array){
for(let i = 0;i<proxy_array;i++){
eval(proxy_array[i] + ' = new Proxy(' + proxy_array[i] + ',{ ' +
'get(target,key){ ' +
'debugger;' +
'console.log("====================")'+
'console.log("获取了",'+ proxy_array[i] + ' 的key属性"); ' +
'console.log("====================")'+
'return target[key]; }')
}
}
//常用的proxy_array
var proxy_array = ["window","document","location","navigator"]
proxy(proxy_array) //如果需要补XMLHttpRequest、ActiveXObject,直接给空对象不用管
//可以用typeof 判断数据类型 //第二种补环境的方法
//代码可以混淆的部分 形参、实参、变量名等可以变的东西
//最终的结果不会混淆
//所以,规避代码中的变量名和方法。需要补的内容是浏览器中有的东西,而不是代码中有的东西
//所以动态的代码,通过补环境是一个很好的方法
//检测音频指纹的代码
//等待页面加载后的调用
//this 改写成that 然后写一个定时器。然后就可以实现自动的执行

最新文章

  1. root用户自动登录
  2. WP_3种磁贴效果设置
  3. while和for可以相互转换例子
  4. 返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
  5. python数据类型之 dict(map)
  6. 《JAVASCRIPT高级程序设计》节点层次和DOM操作技术
  7. co源码分析及其实践
  8. &#39;@P0&#39;附近有语法错误
  9. 总账追朔各模块SQL
  10. vue设置背景图片
  11. 玩转Linux服务器常用命令
  12. css自定义checkbox和radio样式
  13. python接口自动化测试十八:使用bs4框架爬取图片
  14. NRF24L01模块配置
  15. leetcode-algorithms-8 String to Integer (atoi)
  16. 2019.01.06 vijos lxhgww的奇思妙想(长链剖分)
  17. 【译】第十篇 Replication:故障排除
  18. Configure,Makefile.am, Makefile.in, Makefile文件
  19. WebStorm的下载与安装
  20. iOS开发CABasicAnimation动画理解

热门文章

  1. Elasticsearch基础但非常有用的功能之一:别名
  2. TCP和UDP有啥区别?
  3. C++自学笔记 面向对象程序设计OOP(Object Oriented Programming)
  4. 微信小程序实现与登录
  5. CSS基础-关于CSS注释的添加
  6. [CG从零开始] 6. 加载一个柴犬模型学习UV贴图
  7. HDU4991 Ordered Subsequence (树状数组优化DP)
  8. HDU1114 Piggy-Bank (完全背包)
  9. 获取cpu的核数
  10. 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别(含源码)