Javascript使函数返回变量

时间:2012-05-24 21:08:31

标签: javascript node.js express

如何使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;
            }
        };

3 个答案:

答案 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;
    }
});