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