2

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;
            }
        };
4

3 に答える 3

2

ただreturn whateverVariable;

Javascript は型付けされていないため、これを関数シグネチャに入れるために実際に何もすることはできません。

function foo() {
    var x = { a : 10, b : 20};
    return x;
}

var y = foo();
debug(y.a);  //prints 10
于 2012-05-24T21:16:35.010 に答える
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;
    }
});

編集: __defineGetter__ は非推奨のようです。より良い方法があります:

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;
    }
});
于 2012-05-25T09:31:31.790 に答える
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;
            }
        })();
于 2012-05-24T22:17:28.547 に答える