0

foo1.x を取得するのと同じ方法で foo2.x を取得するにはどうすればよいですか?

var foo1 = {x: 4};
var foo2 = {x: function(){return addOne(foo1.x);}}

function addOne(var1){return (var1 + 1);}

alert(foo1.x);
alert(foo2.x()); // needs parentheses, but argument is never needed
4

3 に答える 3

2

ゲッター関数が必要なようです:

var foo1 = {x: 4},
    foo2 = {get x() { return foo1.x + 1; }};

foo2.x; // 5
foo1.x = 0;
foo2.x; // 1
于 2013-03-06T18:48:42.793 に答える
0

foo2.xは関数なので、括弧を追加する必要があります

于 2013-03-06T18:48:33.550 に答える
0

関数自体ではなく、その関数の結果をに格納したいと思います。foo2.x

次のことを試してください。

function addOne(n) {
    return n + 1;
}

var
foo1 = {
    x: 4
},
foo2 = {
    x: (function () {
        return addOne(foo1.x);
    }())
};

alert(foo1.x); // 4
alert(foo2.x); // 5

関数foo2.xを括弧で囲み、その後に括弧を追加して実行します。つまり、もはや関数ではなく、関数の結果です。

于 2013-03-06T19:07:22.713 に答える