蓝桉~MLGT 2024-02-19 16:13 采纳率: 0%
浏览 19

js拦截自定义函数, 并执行新的逻辑

js拦截器

近期公司有个需求是统一修改弹窗的样式,因为分为很多模块,而且使用的地方很多,想到的办法就是通过拦截器实现,或者说代理。
因为公司使用的是jsp项目,很多都是原生的技术,对这块儿不是很了解,希望懂得伙伴指点迷津,研究了好长时间了

需求:监听一个自定义函数,例如函数名为“ Test”的函数,阻止原有的函数并执行新的逻辑,不支持ES6写法(要兼容旧的浏览器太痛苦了)

  • 写回答

1条回答 默认 最新

  • GISer Liu 2024-02-19 17:02
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    你可以通过修改原型链来实现函数拦截。下面是一个简单的示例,演示如何拦截名为"Test"的函数,并执行新的逻辑:

    // 定义拦截器函数
    function interceptor() {
        // 在这里执行你想要的新逻辑
        console.log("拦截器拦截到了Test函数");
    }
    
    // 保存原始的Test函数
    var originalTest = window.Test;
    
    // 修改Test函数的实现
    window.Test = function() {
        // 执行拦截器逻辑
        interceptor();
        
        // 如果需要,你也可以保留原始函数的调用
        // 例如:originalTest.apply(this, arguments);
    };
    
    // 示例:调用拦截后的Test函数
    window.Test();
    

    这段代码将全局的"Test"函数替换为一个新的函数,新函数首先执行拦截器逻辑,然后再执行原始的"Test"函数。这样就实现了拦截并执行新逻辑的需求。

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 2月19日