我正在尝试构建一个javascript对象,如下所示:
function returnA(){ return "A" }
function returnB(){ return "B" }
现在,当我尝试时,
obj = {returnA() : 1, returnB() : 2}
它给我语法错误。
另一方面,我做的时候
obj = {};
obj[returnA()] = 1;
obj[returnB()] = 2;
完美无缺。为什么第一种对象初始化方法不起作用,而第二种方法起作用?执行两者时,是否存在时间上的差异,我的意思是首先在编译阶段(静态绑定)进行初始化,而第二次初始化是在运行期间动态发生的吗?
请帮帮我,因为我是javascript的新手。
提前致谢。
编辑: 我需要知道它为什么会发生的原因。所以,这个问题与标记为重复的问题不同。
答案 0 :(得分:1)
obj = {returnA() : 1, returnB() : 2}
,这显然会导致您无法分配给通话结果的错误。
obj = {};
obj[returnA()] = 1;
obj[returnB()] = 2;
这是有效的,因为returnA()
和returnB()
将返回一个字符串,该字符串将成为对象的属性名称