javascript中对象的初始化在编译时不起作用

时间:2015-12-24 11:59:20

标签: javascript object initialization

我正在尝试构建一个javascript对象,如下所示:

function returnA(){ return "A" }

function returnB(){ return "B" }

现在,当我尝试时,

obj = {returnA() : 1, returnB() : 2}

它给我语法错误。

另一方面,我做的时候

obj = {};
obj[returnA()] = 1;
obj[returnB()] = 2;

完美无缺。为什么第一种对象初始化方法不起作用,而第二种方法起作用?执行两者时,是否存在时间上的差异,我的意思是首先在编译阶段(静态绑定)进行初始化,而第二次初始化是在运行期间动态发生的吗?

请帮帮我,因为我是javascript的新手。

提前致谢。

编辑: 我需要知道它为什么会发生的原因。所以,这个问题与标记为重复的问题不同。

1 个答案:

答案 0 :(得分:1)

obj = {returnA() : 1, returnB() : 2},这显然会导致您无法分配给通话结果的错误。

obj = {};
obj[returnA()] = 1;
obj[returnB()] = 2;

这是有效的,因为returnA()returnB()将返回一个字符串,该字符串将成为对象的属性名称