在Javascript对象中var vs this

Tat*_*Hui 8 javascript node.js

我正在为node.js开发一个web框架.这是代码;

function Router(request, response) {
        this.routes = {};

        var parse = require('url').parse;

        var path = parse(request.url).pathname,
            reqRoutes = this.routes[request.method],
            reqRoutesLen = reqRoutes.length;

        ..... // more code

};
Run Code Online (Sandbox Code Playgroud)

我应该将所有var更改为此,如下所示:

function Router(request, response) {
        this.routes = {};

        this.parse = require('url').parse;

        this.path = this.parse(request.url).pathname;
        this.reqRoutes = this.routes[request.method];
        this.reqRoutesLen = this.reqRoutes.length;

        ..... // more code

};
Run Code Online (Sandbox Code Playgroud)

任何意见?

Poi*_*nty 13

this如果希望属性在相关对象的生命周期中保持不变,请添加属性.使用var局部变量.

编辑 -为BERGI在评论指出,与声明的变量var并不一定消失在从函数调用返回.它们是,并且只能直接访问声明它们的范围内的代码,以及词汇嵌套的范围.