Shorthand method definition fails to serialize and eval property
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 42/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Estagnada
- Stack de tecnologia
- javascript
- Domínio
- tooling
Direção de pesquisa
Reproduza o problema com a chamada de serialize-javascript mostrada no relatório, concentrando-se na saída do método abreviado fn3. Compare sua forma serializada com fn1 e fn2 e, em seguida, avalie o resultado para confirmar que o erro de sintaxe desapareceu. Está concluído quando os métodos abreviados são serializados como JavaScript válido e avaliável, preservando o nome do método.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
*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
- Linguagem predominante
- JavaScript
- Estrelas
- 2.9k
- Forks
- 214
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de yahoo/serialize-javascript
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
yahoo/serialize-javascript#230 ·
-
Ad java scriptAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
yahoo/serialize-javascript#212 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
yahoo/serialize-javascript#208 · 10 comentários · 25 reações ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
yahoo/serialize-javascript#195 ·
-
Serialize regexp to literalAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
yahoo/serialize-javascript#182 ·
Todas as issues de yahoo/serialize-javascript
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
keyxmakerx/Chronicle#1469 ·
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
suradet-ps/codeframe#40 ·
Mantenedores costumam responder em até 1 dia
-
data
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 74/100
gaseous-project/hasheous#637 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
gramps-project/gramps-web#1549 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100