好的我这里有一个简单的测试对象:
var test = {
foo: "dude",
bar: "ok " + foo
}
正如你所看到的,我想在这里使用foo,但它未定义。
我也试过
bar: "ok " + test.foo
但是测试也是未定义的,这有点意义,因为当我这样做时我没有完成定义......
我知道我能做到这一点
var test = {
foo: "dude"
}
test.bar = "ok " + test.foo
但它不是那么漂亮,我必须在测试对象“之外”定义它。
有可能做我想要的吗?或者是最后一种方式吗?
答案 0 :(得分:3)
答案 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
}
}());