使用以点为属性的常量创建javascript对象
我有一个对象保存我的一些程序常量,这样我就可以在所有源代码文件中使用它。constants对象如下所示:使用以点为属性的常量创建javascript对象,javascript,duck-typing,Javascript,Duck Typing,我有一个对象保存我的一些程序常量,这样我就可以在所有源代码文件中使用它。constants对象如下所示: CONSTANTS = { THING_TYPE: 'type', THING_INFORMATION: 'information', THING_DESCRIPTION: 'description', THING_NAME: 'name', manyOtherConstants } 我想用类似的符号来创建对象,并将常数的值作为对象的属性;这就是我想做的: var my
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';
不,您不能使用对象文字初始化语法来执行此操作
因此,唯一的方法是使用第二种情况下的方法-使用
[…]
notatin.因此,不使用eval
我认为您可以按照您想要的方式构建对象字符串(第1段),然后使用JSON.parse
对其进行解析。@antuan122:Yekes,不,谢谢。尽管使用ECMAScript 6<代码>{[CONSTANTS.THING\u TYPE]:'whateverType'}@cookie monster:实际上这很有趣!但乍一看就像是使用数组作为哈希表键(在某些语言/实现中是有效的),好的,谢谢@Cookie就是grat,在等着它。