Existe-t-il un moyen de spécifier la méthode du générateur ES6 dans le littéral d’object dans node.js?

Je n’arrive pas à créer une méthode générasortingce en tant que littéral d’object.

Voici mon code source de travail:

function *getRecords (data) { for (var i = 0; i < data.length; i++) { yield data[i]; } } var records = getRecords(data); for (var record of records) { // process my record } 

Mais quand je déplace ma méthode de générateur dans le littéral d’object:

 var myobj = { *getRecords: function (data) {...} } 

SyntaxError: Unexpected token *

Si j’ajoute des citations

 var myobj = { '*getRecords': function (data) {...} } 

Je reçois: SyntaxError: Unexpected ssortingct mode reserved word

Je lance nodejs v0.12.2 avec l’option --harmony , mais quoi que je fasse, je n’arrive pas à le faire fonctionner.

Le * devrait être après le mot clé function , comme ceci

 var myobj = { getRecords: function* (data) {} } for (var record of myobj['getRecords']()) {} 

Citant le brouillon de la définition de ECMA Script – 6 pour Generator Expression ,

function * (FormalParameters [Rendement, GeneratorParameter] ) {

GeneratorBody

}

Remarque: L’ expression du générateur est différente de la fonction du générateur. Lorsque vous l’assignez à une variable ou l’associez à une clé dans le littéral Object, vous affectez en réalité une expression de générateur. La déclaration normale du générateur sera comme ceci

 function * GeneratorFunctionName(...) { } 

@Thefoureye a déjà répondu, si vous utilisez des expressions de fonction, vous devrez alors placer le jeton * juste après le jeton de function .

Cependant, vous pouvez également utiliser des définitions de méthodes dans les littéraux d’object. Ici, vous placeriez bien le * avant le nom de la méthode du générateur, mais comme pour toute définition de méthode, il ne contient ni le signe deux-points ni le mot-clé function :

 var myobj = { *getRecords(data) { … } }; 

Voici comment le faire en définition d’object simple:

 var myobj = { getRecords: function* (data) {...} } 

Voici comment faire dans la définition de classe ES6:

 class MyClass { * getRecords(data) {...} } var myobj = new MyClass();