Repository navigation
Function binding - #484
Function binding#484diogoosz wants to merge 1 commit into
Conversation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
|
||
|
|
||
| 1. Either use a wrapper function, an arrow to be concise: | ||
| 1. Ou use uma função de invólucro, uma função seta para ficar conciso: |
There was a problem hiding this comment.
Terminologia inconsistente: "função seta" aqui, mas o capítulo vizinho (12-arrow-functions) usa arrow function. Leitor vê dois termos para o mesmo conceito.
| 1. Ou use uma função de invólucro, uma função seta para ficar conciso: | |
| 1. Ou use uma função invólucro (wrapper), uma *arrow function* para ficar conciso: |
|
|
||
| ```js | ||
| askPassword(() => user.login(true), () => user.login(false)); | ||
| ``` |
There was a problem hiding this comment.
Referente ambíguo: "o executa" concorda com user (masculino), dando a entender que se executa o objeto user. O original "runs it" se refere ao método.
| ``` | |
| Agora ela pega `user` das variáveis externas e chama o método da forma normal. |
| O método `setTimeout`, no navegador, é um pouco especial: ele define `this=window` para a chamada da função (para o Node.js, `this` se torna o objeto timer, mas isso não importa muito aqui). Então, para `this.firstName`, ele tenta obter `window.firstName`, que não existe. Em outros casos parecidos, normalmente `this` simplesmente se torna `undefined`. | ||
|
|
||
| The task is quite typical -- we want to pass an object method somewhere else (here -- to the scheduler) where it will be called. How to make sure that it will be called in the right context? | ||
| A tarefa é bem típica -- queremos passar um método de objeto para algum outro lugar (aqui -- para o agendador) onde ele vai ser chamado. Como garantir que ele vai ser chamado no contexto certo? |
There was a problem hiding this comment.
"A tarefa" soa como exercício (as tarefas do capítulo também se chamam "tarefa"). No original, "task" = situação/problema.
| A tarefa é bem típica -- queremos passar um método de objeto para algum outro lugar (aqui -- para o agendador) onde ele vai ser chamado. Como garantir que ele vai ser chamado no contexto certo? | |
| A situação é bem típica -- queremos passar um método de objeto para algum outro lugar (aqui -- para o agendador) onde ele vai ser chamado. Como garantir que ele vai ser chamado no contexto certo? |
| Por exemplo, temos uma função `send(from, to, text)`. Então, dentro de um objeto `user`, podemos querer usar uma variante parcial dela: `sendTo(to, text)`, que envia a partir do usuário atual. | ||
|
|
||
| ## Going partial without context | ||
| ## Indo parcial sem contexto |
There was a problem hiding this comment.
Título é decalque literal de "Going partial without context"; "Indo parcial" não é idiomático em PT.
| ## Indo parcial sem contexto | |
| ## Aplicação parcial sem contexto |
| Quando fixamos alguns argumentos de uma função existente, a função resultante (menos universal) é chamada de *parcialmente aplicada* ou *parcial*. | ||
|
|
||
| Partials are convenient when we don't want to repeat the same argument over and over again. Like if we have a `send(from, to)` function, and `from` should always be the same for our task, we can get a partial and go on with it. | ||
| Parciais são convenientes quando não queremos repetir o mesmo argumento o tempo todo. Tipo se temos uma função `send(from, to)`, e `from` deveria ser sempre o mesmo para a nossa tarefa, podemos obter uma parcial e seguir com ela. |
There was a problem hiding this comment.
"Tipo se temos" é coloquial demais para o registro do resto do artigo.
| Parciais são convenientes quando não queremos repetir o mesmo argumento o tempo todo. Tipo se temos uma função `send(from, to)`, e `from` deveria ser sempre o mesmo para a nossa tarefa, podemos obter uma parcial e seguir com ela. | |
| Parciais são convenientes quando não queremos repetir o mesmo argumento o tempo todo. Por exemplo, se temos uma função `send(from, to)`, e `from` deveria ser sempre o mesmo para a nossa tarefa, podemos obter uma parcial e seguir com ela. |
| --- | ||
|
|
||
| # Function binding | ||
| # Vínculo de função |
There was a problem hiding this comment.
Título "Vínculo de função" vs. corpo usa "vincular"/"vinculação" (ex.: linha 205 "vinculação em massa"). "Vinculação de função" descreve a ação (binding) e fica consistente; também é o texto exibido pelos links <info:bind> em 09-classes/01-class.
| # Vínculo de função | |
| # Vinculação de função |
Tradução do artigo "Function binding" para o português, incluindo os exercícios.
Conforme comentado na #1.