首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在节点/ iojs中使用ES6计算的属性名?

如何在节点/ iojs中使用ES6计算的属性名?
EN

Stack Overflow用户
提问于 2015-07-19 05:11:17
回答 3查看 9.2K关注 0票数 2

我正在尝试编写一个使用CSV并基于标题行动态生成定义的工具?

例如,CSV具有:

代码语言:javascript
复制
Title(STRING), Description(TEXT)
Title Example, Description Example
...

例如,Sequelize 文档指定:

代码语言:javascript
复制
var Entry = sequelize.define('Entry', {
  title: Sequelize.STRING,
  description: Sequelize.TEXT
})

我如何编写这个定义,以便动态地定义它--以便能够基于CSV标题行动态生成title和数据类型Sequelize.STRING

编辑

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

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

代码语言:javascript
复制
var definitionObj = {}
definitionObj['title'] = sequelize.STRING;
definitionObj['description'] = sequelize.TEXT;

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

然而,现在我的问题是,如何在节点中使用ES6 计算属性名 ?我使用的是节点0.12.2,我认为它支持ES6,即使使用--harmony标志,这个简单的代码也会失败:

代码语言:javascript
复制
var Entry = sequelize.define('Entry', {
  ['title']: Sequelize.STRING,
  ['description']: Sequelize.TEXT
});

SyntaxError: Unexpected token [

是真正使用io.js的唯一选择

编辑2

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-20 01:54:16

ECMAScript 6兼容性表显示,Node和io.js目前都不支持计算属性。数据在对象文字扩展 > 计算性质下。

票数 2
EN

Stack Overflow用户

发布于 2016-01-28 10:04:56

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

你要找的东西叫做

计算(动态)属性名称

现在它得到了充分的支持。详细信息可以在这里找到:https://github.com/lukehoban/es6features#enhanced-object-literals

用法:

代码语言:javascript
复制
var obj = {
    // Computed (dynamic) property names
    [ 'prop_' + (() => 42)() ]: 42
};

将产生对象:{prop_42: 42}

票数 6
EN

Stack Overflow用户

发布于 2015-08-06 13:52:30

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31498206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档