Shorthand method definition fails to serialize and eval property
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 42/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- À l'abandon
- Stack technique
- javascript
- Domaine
- tooling
Piste de recherche
Reproduisez le problème avec l’appel à serialize-javascript montré dans le rapport, en vous concentrant sur la sortie de la méthode abrégée fn3. Comparez sa forme sérialisée avec fn1 et fn2, puis évaluez le résultat pour confirmer que l’erreur de syntaxe a disparu. C’est terminé lorsque les méthodes abrégées sont sérialisées en JavaScript valide et évaluable, tout en conservant le nom de la méthode.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
*properly
When using shorthand to define a function as a method in an object literal, serialization assigns a named function expression, which fails to evaluate.
$ var testSer = { fn1: function(a) { console.log(a); return this; }, fn2: (d) => { console.log(d); return this; }, fn3(r) { console.log(r); return this; } };
Validate the functions first:
test 1
{ fn1: [Function], fn2: [Function], fn3: [Function: fn3] }
$ testSer.fn2('test 2')
test 2
<context>
$ testSer.fn3('test 3')
test 3
{ fn1: [Function], fn2: [Function], fn3: [Function: fn3] }
Do the serialization:
$ ca
'{"fn1":function (a) { console.log(a); return this; },"fn2":(d) => { console.log(d); return this; },"fn3":fn3(r) { console.log(r); return this; }}'
Note how it has created a "fn3" entry as a named function, but has neglected to add the function keyword.
Now try to eval:
$ var c = eval('('+ca+')');
SyntaxError: Unexpected token {
at repl:1:20
at REPLServer.defaultEval (repl.js:262:27)
at bound (domain.js:287:14)
at REPLServer.runBound [as eval] (domain.js:300:12)
at REPLServer.<anonymous> (repl.js:431:12)
at emitOne (events.js:82:20)
at REPLServer.emit (events.js:169:7)
at REPLServer.Interface._onLine (readline.js:211:10)
at REPLServer.Interface._line (readline.js:550:8)
at REPLServer.Interface._ttyWrite (readline.js:827:14)
at ReadStream.onkeypress (readline.js:106:10)
at emitTwo (events.js:87:13)
at ReadStream.emit (events.js:172:7)
at emitKeys (readline.js:1251:14)
at next (native)
at ReadStream.onData (readline.js:919:36)
at emitOne (events.js:77:13)
at ReadStream.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:153:18)
at ReadStream.Readable.push (_stream_readable.js:111:10)
at TTY.onread (net.js:531:20)
All it needs to do is add the function keyword:
'{"fn1":function (a) { console.log(a); return this; },"fn2":(d) => { console.log(d); return this; },"fn3": function fn3(r) { console.log(r); return this; }}'
Node version:
$ node -v
v4.4.3
- Langage dominant
- JavaScript
- Étoiles
- 2.9k
- Forks
- 215
- Merge moyen
- 1 j 12 h
- PR mergées (30 j)
- 2
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de yahoo/serialize-javascript
-
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
yahoo/serialize-javascript#230 ·
-
Ad java script Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
yahoo/serialize-javascript#212 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
yahoo/serialize-javascript#208 · 10 commentaires · 25 réactions ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
yahoo/serialize-javascript#195 ·
-
Serialize regexp to literal Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
yahoo/serialize-javascript#182 ·
Toutes les issues de yahoo/serialize-javascript
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
mksglu/context-mode#1200 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
neondatabase/website#5944 ·
-
module: core
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
bigbluebutton/bigbluebutton#25849 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
jaegertracing/jaeger-ui#4506 ·