猴子补丁

猴子补丁(monkey patch):主要功能就是动态的属性的替换,模块运行时替换的功能。说直接点就是程序功能的追加或者变更。
\color{green} {例子1:追加功能}

例子,为res.end添加额外逻辑(clearTimeout),r又不影响es.end的执行结果。
function (req, res, next) {
      `// 存储原厂设置res.end`
       var end = res.end
      `// res.end 重新赋值`
       res.end = function (chunk, encoding) {
            `// res.end 恢复原厂设置`
            res.end = end
           ` // 重写的res.end被调用时,其内部调用原厂的res.end`
            res.end(chunk, encoding)
            `// 增加的额外逻辑`
            clearTimeout(timer)
        }
}
module.exports = function (opts) {
    var time = opts.time || 100;
    return function (req, res, next) {
        var timer = setTimeout(function () {
            console.log('is taking too long to respond', req.method, req.url)
        }, time)
       ` // 猴子补丁 `
        var end = res.end
        res.end = function (chunk, encoding) {
            res.end = end
            res.end(chunk, encoding)
            clearTimeout(timer)
        }
        next()
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 写了一段时间java切回写python偶尔会出现一些小麻烦,比如:在java中自定义对象变成json串很简单,调用...
    8993c20c49db阅读 25,185评论 0 8
  • 猴子补丁 猴子补丁的定义:是指再动态语言中,不去改变源码而对功能进行追加和变更。 猴子补丁的这个叫法起源于Zope...
    一如初见_39c3阅读 348评论 0 0
  • 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。 为什么叫猴子补丁 属性的运行时替换和猴子也没什...
    cb9e58ff5a37阅读 8,163评论 0 3
  • json 1、序列化:将内存数据转成字符串加以保存。dumps2、反序列化:将字符串转成内存数据加以读取。load...
    阿登20阅读 488评论 0 0
  • 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。猴子补丁的叫法有些莫名其妙,只要和“模块运行时替...
    多喝烫水_阅读 352评论 0 0

友情链接更多精彩内容