Skip to content

Object to primitive conversion - #489

Open
diogoosz wants to merge 1 commit into
javascript-tutorial:masterfrom
diogoosz:translate-object-toprimitive
Open

diogoosz wants to merge 1 commit into
javascript-tutorial:masterfrom
diogoosz:translate-object-toprimitive

Conversation

@diogoosz

@diogoosz diogoosz commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Tradução do artigo "Object to primitive conversion" para o português.

Conforme comentado na #1. Obs.: esse título já havia sido reivindicado por @DesKd em fev/2026, sem PR desde então — estou assumindo a tradução.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
A coisa importante de se saber sobre todos os métodos de conversão de primitivo é que eles não necessariamente retornam o primitivo "sugerido pelo hint".

There is no control whether `toString` returns exactly a string, or whether `Symbol.toPrimitive` method returns a number for the hint `"number"`.
Não há nenhum controle sobre se `toString` retorna exatamente uma string, ou se o método `Symbol.toPrimitive` retorna um número para o hint `"number"`.

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.

Tradução ambígua: "There is no control whether" significa que não há verificação/garantia de que o retorno seja do tipo sugerido. "Não há nenhum controle sobre se..." é truncado e pode ser lido como "não podemos controlar". Sugestão: "Não há nenhuma verificação de que toString retorne exatamente uma string, ou de que o método Symbol.toPrimitive retorne um número para o hint \"number\"."

- try calling `obj.toString()` or `obj.valueOf()`, whatever exists.
3. Otherwise if hint is `"number"` or `"default"`
- try calling `obj.valueOf()` or `obj.toString()`, whatever exists.
1. Chama `obj[Symbol.toPrimitive](hint)` -- o método com a chave simbólica `Symbol.toPrimitive` (symbol do sistema), se esse método existir,

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.

O original usa um hífen simples (-) e esta linha passou a usar --. Mudança de pontuação fora do escopo da tradução; sugiro manter - como no original (ou usar o mesmo travessão da linha 29, mas de forma deliberada).

: Ocorre em casos raros, quando o operador "não tem certeza" de qual tipo esperar.

For instance, binary plus `+` can work both with strings (concatenates them) and numbers (adds them). So if a binary plus gets an object as an argument, it uses the `"default"` hint to convert it.
Por exemplo, o mais binário `+` pode funcionar tanto com strings (concatenando elas) quanto com números (somando eles). Então, se um mais binário recebe um objeto como argumento, ele usa o hint `"default"` pra convertê-lo.

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.

Registro coloquial: "concatenando elas" / "somando eles" usa pronome reto como objeto. No texto didático, prefira "concatenando-as" / "somando-os". Também pra aqui destoa do para usado no resto do artigo.

O que acontece quando objetos são somados `obj1 + obj2`, subtraídos `obj1 - obj2` ou exibidos usando `alert(obj)`?

JavaScript doesn't allow you to customize how operators work on objects. Unlike some other programming languages, such as Ruby or C++, we can't implement a special object method to handle addition (or other operators).
O JavaScript não permite que você personalize como os operadores funcionam em objetos. Diferente de outras linguagens de programação, como Ruby ou C++, não podemos implementar um método especial de objeto pra lidar com a adição (ou outros operadores).

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.

Inconsistência de registro: o artigo mistura pra (linhas 6, 14, 72, 92) com para (maioria das ocorrências). Sugiro padronizar em para, como nos demais artigos traduzidos.

// hint = one of "string", "number", "default"
// aqui vai o código para converter este objeto para um primitivo
// ele precisa retornar um valor primitivo
// hint = um de "string", "number", "default"

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.

Calque do inglês "one of": "um de" soa estranho em português. Sugestão: // hint = um entre "string", "number", "default".

```

So if we try to use an object as a string, like in an `alert` or so, then by default we see `[object Object]`.
Então, se tentarmos usar um objeto como uma string, tipo num `alert` ou algo assim, então por padrão vemos `[object Object]`.

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.

Registro informal ("tipo num alert ou algo assim") destoa do resto do texto. Sugestão: "como num alert ou similar".

1. It will allow us to understand what's going on in case of coding mistakes, when such an operation happened accidentally.
2. There are exceptions, where such operations are possible and look good. E.g. subtracting or comparing dates (`Date` objects). We'll come across them later.
1. Vai nos permitir entender o que está acontecendo em caso de erros de código, quando esse tipo de operação acontece acidentalmente.
2. Existem exceções, onde esse tipo de operação é possível e fica legal. Ex.: subtrair ou comparar datas (objetos `Date`). Vamos nos deparar com elas mais tarde.

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.

"fica legal" é coloquial demais para "look good". Sugestão: "e fazem sentido" / "e ficam elegantes".

Essa é uma limitação importante: o resultado de `obj1 + obj2` (ou outra operação matemática) não pode ser outro objeto!

E.g. we can't make objects representing vectors or matrices (or achievements or whatever), add them and expect a "summed" object as the result. Such architectural feats are automatically "off the board".
Ex.: não podemos fazer objetos representando vetores ou matrizes (ou conquistas ou qualquer outra coisa), somá-los e esperar um objeto "somado" como resultado. Esses feitos arquiteturais são automaticamente "tirados de cena".

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.

"tirados de cena" não transmite bem "off the board" (= fora de cogitação, impossível). Sugestão: "Esses feitos arquiteturais estão automaticamente "fora de cogitaçã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