如何使用变量键在一个语句中声明嵌套的Javascript对象

jus*_*don 2 javascript reactjs

这可能是Ruby做得更好的东西,但有更好的方法来编写这个Javascript代码(对于React):

handleCellChange: function(rowIdx, prop, val) {
    var updateObj = {};
    updateObj.data = {};
    updateObj.data[rowIdx] = {};
    updateObj.data[rowIdx][prop] = { $set: val };

    var newState = React.addons.update(this.state, updateObj);
Run Code Online (Sandbox Code Playgroud)

小智 7

在ES6中,您可以使用计算属性名称:

updateObj = { data: { [rowIdx]: { [prop]: {$set: val} } } };
Run Code Online (Sandbox Code Playgroud)

你可以在Traceur或Firefox中使用它,等等(但还没有在节点 - 和谐中).

以下是为您解释此语法的问题:https://www.npmjs.org/package/es6-computed-property-keys .

有关更多信息,请参阅http://wiki.ecmascript.org/doku.php?id=harmony:object_literals#object_literal_computed_property_keys.另请参阅http://kangax.github.io/compat-table/es6/#中的 "计算属性"项.