如何使app.locals.user
成为返回值而不是函数?现在我必须运行app.locals.user().name
。
我该如何制作,以便我可以运行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;
}
};
答案 0 :(得分:2)
只是return whateverVariable;
Javascript没有输入,所以你无法真正做任何事情将它放在函数签名中。
function foo() {
var x = { a : 10, b : 20};
return x;
}
var y = foo();
debug(y.a); //prints 10
答案 1 :(得分:1)
您可以立即执行该功能,以便将结果存储为变量:
app.locals.user = (function(){
if(typeof(req.session.user) != 'undefined'){
console.log(req.session.user.name.full);
return req.session.user;
}else{
return false;
}
})();
答案 2 :(得分:1)
好吧,你可以使用__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;
}
});
修改:__ undefineGetter__似乎已被弃用,这是一种更好的方法:
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;
}
});