I'm developing a web framework for node.js. here is the code;
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
};
Should I change all the var to this, like so:
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
};
Any comments?
Add properties to this
when you want the properties to persist with the life of the object in question. Use var
for local variables.
edit — as Bergi notes in a comment, variables declared with var
don't necessarily vanish upon return from a function invocation. They are, and remain, directly accessible only to code in the scope in which they were declared, and in lexically nested scopes.
It on depends what you want to do.
If you declare the variables with var
, then they are local to the function and cannot be accessed outside.
If you assign the variables to this
, then they will be set as properties of the context object the function is called on.
So if e.g. if you write:
var obj = new Router();
then obj
will have all the variables as properties and you can changed them. If you call
somobject.Router()
then all the variables will be set as properties of someobject
.
You can think of properties hung from this
sort of like instance variables in other languages (sort of).
It looks like you're creating a constructor function and will likely add some prototype methods. If that's the case, and you need access to routes
, you've got it, but not path
.
Router.prototype = {
doSomething: function(){
this.routes; // available
path; // not available
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With