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

看来你想要一个getter 函数

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 回答