javascript - NodeJS connect模組use的問題
漂亮男人
漂亮男人 2017-07-03 11:42:55
0
1
964

初學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的一些東西,不知道理解對不對

漂亮男人
漂亮男人

全部回覆(1)
phpcn_u1582

閉包」 一詞源自於以下兩者的結合:要執行的程式碼區塊(由於自由變數被包含在程式碼區塊中,這些自由變數以及它們所引用的物件沒有被釋放)和為自由變數提供綁定的運算環境(作用域) ---百度百科

先說下閉包概念

你的理解沒錯

這個是驗證過程,原因是因為如果你直接調用end,這個end是因為這個閉包強行留下來的,所以會自動綁定計算機環境,所以這是後他的this就是Window,所以直接呼叫end會出錯

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板