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是按域名维度存储的

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文地址:https://www.jianshu.com/p/fd742b49a25c 1.1、什么是HTML语义...
    Daydream_许多阅读 786评论 0 0
  • 1.1、什么是HTML语义化?有什么好处? 根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者...
    倾城一梦1123阅读 2,628评论 1 11
  • 实习的时候写的学习笔记 如有错误请各位大佬直接留言批判,防止错误的信息会误导他人! ---------------...
    ci鱼丸粗面阅读 594评论 0 0
  • 1.let 命令 let声明的变量只在当前代码块有效 let不存在变量提升,必须在声明后再使用 暂时性死区:暂时性...
    xingyunfuhao阅读 401评论 0 0
  • JSV5 1、vue 双向绑定的原理 通过object.defineProperty()方法来劫持属性的gette...
    merlinxu阅读 1,373评论 0 1

友情链接更多精彩内容