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

getting value from foo into bar when defining object?

本文关键字:bar 获取 foo 对象 定义      更新时间:2023-09-26

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

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

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

我也试过

   bar: "ok " + test.foo

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

我知道我能做这个

var test = {
    foo: "dude"
}
test.bar = "ok " + test.foo

但它并没有那么漂亮,我必须在测试对象的"外部"定义它。

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

将其转换为方法:

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

Fiddle:http://jsfiddle.net/8xqGL/

假设我们不能更改代码的结构,那么您必须在test对象之外定义一些东西。但IMHO最好这样做:

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

简短的回答是"不,没有其他方法可以做你想做的事"。但是,您可能需要考虑使用闭包。

var test = (function () {
    var foo, bar;
    foo = "dude";
    bar = "ok " + foo;
    return {
        foo: foo,
        bar: bar
    }
}());