var对这个Javascript对象

我正在开发一个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 }; 

我应该改变所有的变种,如下所示:

 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 }; 

任何意见?

当你希望这些属性与所讨论的对象的生命一致时,给this添加属性。 使用var作为局部variables。

编辑 – 作为Bergi在注释中注释,用var声明的variables不一定从函数调用返回消失。 他们现在仍然只能在声明范围内的代码和词汇嵌套范围内直接访问。

这取决于你想要做什么。

如果用var声明variables,则它们是函数的局部variables,不能在外部访问。

如果将variables赋值给this ,那么它们将被设置为该函数被调用的上下文对象的属性。

所以,如果如果你写:

 var obj = new Router(); 

那么obj将所有的variables作为属性,你可以改变它们。 如果你打电话

 somobject.Router() 

那么所有的variables将被设置为someobject属性。

您可以考虑从其他语言(types)的this像实例variables挂起的属性。

看起来你正在创build一个构造函数,并且可能会添加一些原型方法。 如果是这样的话,你需要访问routes ,你已经得到了,但没有path

 Router.prototype = { doSomething: function(){ this.routes; // available path; // not available } } 

在构造函数中使用var通常用于私有variables,而使用this. 用于公共variables。

this.为例this.

 function Router() { this.foo = "bar"; this.foobar = function () { return this.foo; } } var r = new Router(); r.foo // Accessible 

示例与var

 function Router() { var _foo = "bar"; this.foobar = function () { return _foo; } } var r = new Router(); r._foo // Not accessible