在定义对象时从foo获取值到bar?

时间:2013-07-30 08:04:33

标签: javascript object

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

var test = {

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

}

正如你所看到的,我想在这里使用foo,但它未定义。

我也试过

   bar: "ok " + test.foo

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

我知道我能做到这一点

var test = {

    foo: "dude"

}

test.bar = "ok " + test.foo

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

有可能做我想要的吗?或者是最后一种方式吗?

3 个答案:

答案 0 :(得分:3)

把它变成方法:

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

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

答案 1 :(得分:2)

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

var foo = "dude";

var test = {
    foo: foo,
    bar: "ok " + foo
};

答案 2 :(得分:0)

简短的回答是“不,没有别的办法做你想做的事”。但是,您可能需要考虑使用闭包。

var test = (function () {

    var foo, bar;

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

    return {
        foo: foo,
        bar: bar
    }

}());