2022-08-20

基于Evil.js的思考

(global=> {

const_includes =Array.prototype.includes;Array.prototype.includes=function(...args) {if(this.length%7!==0) {return_includes.call(this, ...args); }else{returnfalse; }};})((0, eval)('this'));//数组长度为7时includes永远为false

立即执行函数 获取顶级作用域对象 改写相应方法 可以对原生的方法做一些改写 比如

修改原生fetch,每次请求失败时,可以自动做一次上报失败原因给监控后台。

修改原生fetch,统计所有请求平均耗时。

修改原生localStorage,每次set、get、remove时,默认加一个固定的key在前方。因为localStorage是按域名维度存储的

如果防止原型被修改 可以在开头保存一份函数原型的引用。后续再判断函数的原型是否等于开头保存的这个引用。如果等于,说明没人改。

你可能感兴趣的:(2022-08-20)