Reputation: 3073
How can I make this app.locals.user
to be the return value instead of a function? Right now I have to run app.locals.user().name
.
How can I make it so I can just run app.locals.user.name
?
app.locals.user = function(){
if(typeof(req.session.user) != 'undefined'){
console.log(req.session.user.name.full);
return req.session.user;
}else{
return false;
}
};
Upvotes: 2
Views: 169
Reputation: 3044
Well, you could use __defineGetter__ :
app.locals.__defineGetter__("user", function() {
if(typeof(req.session.user) != 'undefined') {
console.log(req.session.user.name.full);
return req.session.user;
} else {
return false;
}
});
Edit : __defineGetter__ seems to be deprecated, here is a better way :
Object.defineProperty(app.locals, "user", { get : function() {
if(typeof(req.session.user) != 'undefined') {
console.log(req.session.user.name.full);
return req.session.user;
} else {
return false;
}
});
Upvotes: 1
Reputation: 7940
You can immediately execute the function in order to store the result as a variable:
app.locals.user = (function(){
if(typeof(req.session.user) != 'undefined'){
console.log(req.session.user.name.full);
return req.session.user;
}else{
return false;
}
})();
Upvotes: 1
Reputation: 60808
just return whateverVariable;
Javascript isn't typed so you can't really do anything to put this in the function signature.
function foo() {
var x = { a : 10, b : 20};
return x;
}
var y = foo();
debug(y.a); //prints 10
Upvotes: 2