【发布时间】:2011-11-18 00:05:22
【问题描述】:
可以这样做吗? (显然不是这种语法)
var a = {
b : 10,
c : this.b * 2 // returns 'undefined'
};
我也试过
var a = {
b : 10,
c : a.b * 2 // throws error 'a is undefined'
};
和
var a = {
b : 10,
c : b * 2 // throws error 'b is undefined'
};
这些值是未定义的,这对我来说是有意义的,我还没有完成对它们的定义。然而,在我看来,有一种解决方案可以构建这样的对象并让c 以b 为条件
【问题讨论】:
-
考虑到您在编译时初始化
b,为什么c会以它为条件?你已经知道它是什么了! -
我发布的是一个简化的例子。我不会总是知道
b是什么。否则我不需要有条件的。想想b : function(x) { /* do some stuff */ return y;}, -
@Chad 1. JS 未编译,2. 使用基于另一个表达式的表达式初始化变量是完全正常的,其他语言(例如 C)很好地管理它。
-
@Alnitak 编译是 JS 的错误词......但我的观点是一样的。他正在硬编码一个值(相当于在编译时知道一些东西)。但是,OP 已经澄清说他可能实际上并不知道该值,因此无论如何这一点都没有实际意义。
-
谢谢@Felix Kling!当我第一次搜索它时,我找不到任何关于此的帖子。我喜欢吸气剂解决方案。 +1
标签: javascript object