JavaScript中如何将值作为对象的键名传入?
解决动态键名作为对象属性的语法错误
错误原因
你直接在对象字面量里使用key_names[0]作为键名的写法不被ES5及更早的语法支持,对象字面量的默认键名只能是标识符,无法直接解析表达式,因此抛出SyntaxError: Unexpected token [错误。
解决方案
方案1:ES6计算属性名(推荐)
ES6引入了计算属性名语法,只需将动态键名用方括号[]包裹,就能在对象字面量中直接使用表达式作为键名:
let x = [] let key_names = ['a.b.c','g.h.i'] x.push({ [key_names[0]]: 1, [key_names[1]]: 2 }) console.log(x) // 输出:[ { 'a.b.c': 1, 'g.h.i': 2 } ]
方案2:传统对象赋值(兼容ES5)
如果需要兼容不支持ES6的环境,可以先创建空对象,再通过方括号语法逐个添加键值对:
let x = [] let key_names = ['a.b.c','g.h.i'] let obj = {} obj[key_names[0]] = 1 obj[key_names[1]] = 2 x.push(obj) console.log(x) // 输出:[ { 'a.b.c': 1, 'g.h.i': 2 } ]
内容的提问来源于stack exchange,提问作者jakeMantle
相关产品推荐
相关产品推荐

