使用带点作为属性的常量创建javascript对象

时间:2014-07-23 22:52:59

标签: javascript duck-typing

我有一个对象包含我的一些程序常量,以便我可以在所有源代码文件中使用它。常量对象是这样的:

CONSTANTS = {
  THING_TYPE: 'type',
  THING_INFORMATION: 'information',
  THING_DESCRIPTION: 'description',
  THING_NAME: 'name',
  manyOtherConstants
}

我想用类似的符号创建对象,并使用常量的值作为对象的属性;这就是我想要做的事情:

var myObject = {
  CONSTANTS.THING_TYPE: 'whateverType',
  CONSTANTS.THING_INFORMATION: {
    CONSTANTS.THING_DESCRIPTION: 'whateverDescription',
    CONSTANTS.THING_NAME: 'whateverName',
  }
}

问题在于我不能以这种方式使用常量。 Javascript说:

'SyntaxError: missing : after property id'

有没有办法用我的符号做我想做的事情?或者我唯一能做的就是以下几点?

var myObject = {}
myObject[CONSTANTS.THING_TYPE] = 'whateverType';
myObject[CONSTANTS.THING_INFORMATION] = {};
myObject[CONSTANTS.THING_INFORMATION][CONSTANTS.THING_DESCRIPTION] = 'whateverDescription';
myObject[CONSTANTS.THING_INFORMATION][CONSTANTS.THING_NAME] = 'whateverName';

1 个答案:

答案 0 :(得分:1)

不,你不能使用对象文字初始化语法来做到这一点。

所以唯一的方法是使用你在第二种情况下所做的事情 - 使用[...] notatin。