Javascript 在定义对象时从foo获取值到bar?
好的,我这里有一个简单的测试对象:Javascript 在定义对象时从foo获取值到bar?,javascript,object,Javascript,Object,好的,我这里有一个简单的测试对象: var test = { foo: "dude", bar: "ok " + foo } 正如您所看到的,我想在这里使用foo-inside-bar,但它没有定义 我也试过了 bar: "ok " + test.foo 但测试也是未定义的,这有点道理,因为当我这么做的时候,我还没有定义它 我知道我能做到 var test = { foo: "dude" } test.bar = "ok " + test.foo 但
var test = {
foo: "dude",
bar: "ok " + foo
}
正如您所看到的,我想在这里使用foo-inside-bar,但它没有定义
我也试过了
bar: "ok " + test.foo
但测试也是未定义的,这有点道理,因为当我这么做的时候,我还没有定义它
我知道我能做到
var test = {
foo: "dude"
}
test.bar = "ok " + test.foo
但它并没有那么漂亮,我必须在测试对象的“外部”定义它
有可能做我想做的吗?或者最后一种方法是唯一的方法吗?将其转化为方法:
bar: function() { return "ok " + this.foo ;}
小提琴:将其转化为方法:
bar: function() { return "ok " + this.foo ;}
Fiddle:假设我们无法更改代码的结构,那么您必须在
测试对象之外定义一些内容。但我认为这样做会更好:
var foo = "dude";
var test = {
foo: foo,
bar: "ok " + foo
};
假设我们不需要更改代码的结构,那么您必须在test
对象之外定义一些内容。但我认为这样做会更好:
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
}
}());
简短的回答是“不,没有其他方法可以做你想做的事”。但是,您可能需要考虑使用闭包。
var test = (function () {
var foo, bar;
foo = "dude";
bar = "ok " + foo;
return {
foo: foo,
bar: bar
}
}());
尽管从标量更改为函数,但这会导致与原始代码不同的行为:现在bar
会随着foo
中的更改进行实时更新。“这可能不可取。”乔恩说得没错,但我们可以肯定地认为这是可取的@Cherniv是什么让你如此确信它是你想要的?@JanDvorak提供给我们的原始数据OP@Cherniv当前位置我恭敬地表示不同意——假设没有知识被称为胡乱猜测,我反对。至少,在更改原始代码的语义时,差异应该非常明确,以避免意外。尽管从标量更改为函数,但这会导致与原始代码不同的行为:现在bar
会实时更新foo
中的更改。“这可能不可取。”乔恩说得没错,但我们可以肯定地认为这是可取的@Cherniv是什么让你如此确信它是你想要的?@JanDvorak提供给我们的原始数据OP@Cherniv当前位置我恭敬地表示不同意——假设没有知识被称为胡乱猜测,我反对。至少,在更改原始代码的语义时,差异应该非常明确,以避免意外。