0

好的,我在这里有一个简单的测试对象:

var test = {

    foo: "dude",
    bar: "ok " + foo

}

如您所见,我想在这里使用 foo inside bar,但它未定义。

我也试过

   bar: "ok " + test.foo

但是测试也是未定义的,这有点道理,因为当我这样做时我还没有完成定义......

我知道我能做到

var test = {

    foo: "dude"

}

test.bar = "ok " + test.foo

但它并不是那么漂亮,我必须在测试对象“外部”定义它。

有可能做我想做的事吗?还是最后一种方法是唯一的方法?

4

3 回答 3

3

把它变成方法:

bar: function() { return "ok " + this.foo ;}

小提琴:http: //jsfiddle.net/8xqGL/

于 2013-07-30T08:05:54.413 回答
2

假设我们不改变代码的结构,那么你必须在test对象之外定义一些东西。但恕我直言,这样做会更好:

var foo = "dude";

var test = {
    foo: foo,
    bar: "ok " + foo
};
于 2013-07-30T08:07:33.517 回答
0

The short answer is "no, there is no other way doing what you want". But, you might want to consider using a closure instead.

var test = (function () {

    var foo, bar;

    foo = "dude";
    bar = "ok " + foo;

    return {
        foo: foo,
        bar: bar
    }

}());
于 2013-07-30T08:29:51.633 回答