【问题标题】:How to use ES6 computed property names in node / iojs?如何在 node/js 中使用 ES6 计算属性名称?
【发布时间】:2015-10-08 11:54:18
【问题描述】:

我正在尝试编写一个接受 CSV 并根据标题行动态生成定义的工具?

例如,CSV 包含:

Title(STRING), Description(TEXT)
Title Example, Description Example
...

Sequelize docs 指定,例如:

var Entry = sequelize.define('Entry', {
  title: Sequelize.STRING,
  description: Sequelize.TEXT
})

如何编写此定义以便动态定义 - 以便可以根据 CSV 标题行动态生成 title 和数据类型 Sequelize.STRING


编辑

好的,经过一番研究,我认为显而易见的问题是“如何在对象文字中使用变量名作为动态键名”,并且已经回答了好几次。

因此,用括号表示法很简单:

var definitionObj = {}
definitionObj['title'] = sequelize.STRING;
definitionObj['description'] = sequelize.TEXT;

var Entry = sequelize.define('Entry', definitionObj);

但是,那么我现在的问题是如何在节点中使用 ES6 Computed Property Names?我正在使用我认为支持 ES6 的节点 0.12.2,即使使用 --harmony 标志,这个简单的代码也会失败:

var Entry = sequelize.define('Entry', {
  ['title']: Sequelize.STRING,
  ['description']: Sequelize.TEXT
});

SyntaxError: Unexpected token [

io.js 真的是唯一的选择吗?

编辑 2

实际上,即使使用 iojs,这个语法仍然失败,所以我一定是做错了什么?

【问题讨论】:

  • 以下是对您尝试使用的功能的支持:kangax.github.io/compat-table/es6/…。 node 和 io 目前都不支持它。
  • 另外,您似乎不需要任何计算属性名称,因为您的所有对象定义都是等效的(并使用静态 titledescription 名称)?!
  • @NoahFreitas 啊我明白了,所以我还没有完全疯了。你碰巧知道列表中提到的是什么吗?
  • @bergi 抱歉,这只是示例,在实际使用中我想使用开头提到的动态名称(从 CSV 中提取标题名称)。
  • 我强烈建议您查看babel

标签: javascript node.js csv ecmascript-6 sequelize.js


【解决方案1】:

ECMAScript 6 compatibility table 表明 Node 和 io.js 目前都不支持计算属性。数据在object literal extensions > computed properties下。

【讨论】:

  • 从 NodeJS 4.x 开始支持。
【解决方案2】:

【讨论】:

    【解决方案3】:

    在当前的 Node 版本 > 4.x 中,您对 ES6 有一些支持。状态可以在文档中找到: https://nodejs.org/en/docs/es6/

    你要找的东西叫

    计算的(动态)属性名称

    现在完全支持。详情可以在这里找到:https://github.com/lukehoban/es6features#enhanced-object-literals

    用法:

    var obj = {
        // Computed (dynamic) property names
        [ 'prop_' + (() => 42)() ]: 42
    };
    

    将产生对象:{prop_42: 42}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2020-10-07
      • 2018-01-27
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      相关资源
      最近更新 更多