【问题标题】:Create javascript object using constants with dots as property [duplicate]使用带有点的常量作为属性创建javascript对象[重复]
【发布时间】:2014-09-15 08:09:57
【问题描述】:

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

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';

【问题讨论】:

  • 所以,不使用eval,我认为你可以按照你想要的方式(第一段)构建一个对象字符串,然后JSON.parse它。
  • @antuan122:哎呀,不用了。

标签: javascript duck-typing


【解决方案1】:

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

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

【讨论】:

  • 虽然在 ECMAScript 6 中出现。 {[CONSTANTS.THING_TYPE]: 'whateverType'}
  • @cookie 怪物:这其实很有趣!但乍一看像是使用数组作为哈希表键(在某些语言/实现中有效)
  • 好的,谢谢。 @cookiemonster 那太好了,等待它。
猜你喜欢
  • 2016-05-04
  • 2012-06-06
  • 2013-06-19
  • 2017-03-06
  • 1970-01-01
  • 2011-03-10
  • 2013-11-21
  • 2018-06-07
相关资源
最近更新 更多