Skip to content

Function binding - #484

Open
diogoosz wants to merge 1 commit into
javascript-tutorial:masterfrom
diogoosz:translate-function-binding
Open

diogoosz wants to merge 1 commit into
javascript-tutorial:masterfrom
diogoosz:translate-function-binding

Conversation

@diogoosz

@diogoosz diogoosz commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Tradução do artigo "Function binding" para o português, incluindo os exercícios.

Conforme comentado na #1.

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:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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));
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
```
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?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"A tarefa" soa como exercício (as tarefas do capítulo também se chamam "tarefa"). No original, "task" = situação/problema.

Suggested change
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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Título é decalque literal de "Going partial without context"; "Indo parcial" não é idiomático em PT.

Suggested change
## 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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Tipo se temos" é coloquial demais para o registro do resto do artigo.

Suggested change
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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
# Vínculo de função
# Vinculação de função

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants