NodeJS connect模块use的问题

初学nodejs,在了不起的NodeJS有这样一段代码,通过中间件,实现代码请求时间过长的控制台打印

//request-time.js

module.exports = function(opts){

    var time = opts.time||100;

    return function(req,res,next){

        var timer = setTimeout(function(){

            console.log(req.method + " , " + req.url + " , too long!");

        },time);


        var end = res.end;

        res.end = function(chunk,encoding){

            res.end = end;                                        //

            res.end(chunk,encoding);                        //直接end(chunk,encoding)会出错

            clearTimeout(timer);

        };

        next(); 

    }

}

注释的部分就是本人的疑问,猜测是end里有this的一些东西,不知道理解对不对

慕码人2483693
浏览 429回答 1
1回答

红颜莎娜

闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域) ---百度百科先说下闭包概念你的理解没错这个是验证过程,原因是因为如果你直接调用end,这个end是因为这个闭包强行留下来的,所以会自动绑定计算机环境,所以这是后他的this就是Window,所以直接调用end会出错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript