You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: JS/JS-br.md
+7-7
Original file line number
Diff line number
Diff line change
@@ -89,7 +89,7 @@ let a = {
89
89
90
90
Apenas para adicão, se um dos parâmentros for uma string, o outro será convertido para uma string também. Para todas as outras operações, enquanto se um dos parâmetros for um número, o outro será convertido para um número.
91
91
92
-
Adicões invocaram três tipos de conversões de tipos: para timos primitivos, para números e string:
92
+
Adicões invocaram três tipos de conversões de tipos: para tipos primitivos, para números e string:
93
93
94
94
```js
95
95
1+'1'// '11'
@@ -161,7 +161,7 @@ Quanto a `null`, ele é sempre tratado como um `object` pelo `typeof`, apesar
161
161
typeofnull// 'object'
162
162
```
163
163
164
-
Por que isso acontece? Porque a versão inicial do JS era baseada em sistemas de 32-bits, do qual armazenava a informação do tipo de variável em bits mais baixos para considerações de performance. Essas começam com objetos `000`, e todos os bits de `null` são zero, então isso é erroneamente tratado como um objeto. Apesar do código atual verificar se os tipos internos mudaram, esse bug foi passado para baixo.
164
+
Por que isso acontece? Porque a versão inicial do JS era baseada em sistemas de 32-bits, do qual armazenava a informação do tipo de variável em bits mais baixos por considerações de performance. Essas começam com objetos `000`, e todos os bits de `null` são zero, então isso é erroneamente tratado como um objeto. Apesar do código atual verificar se os tipos internos mudaram, esse bug foi passado para baixo.
165
165
166
166
Nós podemos usar `Object.prototype.toString.call(xx)` se quisermos pegar o tipo de dado correto da variável, e então obtemos uma string como `[object Type]`:
167
167
@@ -438,7 +438,7 @@ Para `let`, ele vai criar um escopo de block-level, do qual é equivalente a:
Cada função, além de `Function.prototype.bind()`, tem uma propriedade interna, detonado como `prototype`, do qual é uma referência para o prototype.
441
+
Cada função, além de `Function.prototype.bind()`, tem uma propriedade interna, denotado como `prototype`, do qual é uma referência para o prototype.
442
442
443
443
Cada objeto tem uma propriedade interna, denotada como `__proto__`, que é uma referência para o prototype do construtor que criou o objeto. Essa propriedade é atualmente referenciada ao `[[prototype]]`, mas o `[[prototype]]` é uma propriedade interna que nós não podemos acessar, então usamos o `__proto__` para acessar ele.
A implementação da idéia acima sobre herança: primeiro cria uma instância da classe do pai => muda o original `__proto__` de instância, conectado ao `prototype` da classe do filho => muda o `__proto__` da classe do filho `prototype` para o `prototype` da classe do pai.
506
506
507
-
A herança de implementação com o método acima pode perfeitamente resolve a restrição no baixo nível do JS.
507
+
A herança de implementação com o método acima pode perfeitamente resolver a restrição no baixo nível do JS.
508
508
509
509
510
510
# Cópia rasa e profunda
@@ -595,7 +595,7 @@ let newObj = JSON.parse(JSON.stringify(obj))
595
595
console.log(newObj)
596
596
```
597
597
598
-
Se um objto é uam referência circular como o exemplo acima, você vai encontrar o método `JSON.parse(JSON.stringify(object))` ele não pode fazer a cópia profunda desse objeto:
598
+
Se um objto é uma referência circular como o exemplo acima, você vai encontrar o método `JSON.parse(JSON.stringify(object))` ele não pode fazer a cópia profunda desse objeto:
@@ -694,7 +694,7 @@ A diferença entre as modularizações no `CommonJS` a no ES6 são:
694
694
695
695
- O antigo suporta importes dinamico, que é `require(${path}/xx.js)`; o último não suporta isso ainda, mas
696
696
existem propostas.
697
-
- O antigo usa importes síncronos. Desde de que usado no servidor os arquivos são locais, não importa muito mesmo se o import síncrono bloqueia a main thread. O último usa importe assíncrono, porque ele é usado no navegador em que os arquivos baixados são precisos. O processo de rendereização seria afetado muito se assíncrono importe for usado.
697
+
- O antigo usa importes síncronos. Desde de que usado no servidor os arquivos são locais, não importa muito mesmo se o import síncrono bloqueia a main thread. O último usa importe assíncrono, porque ele é usado no navegador em que os arquivos baixados são precisos. O processo de renderização seria afetado muito se assíncrono importe for usado.
698
698
- O anterior copia os valores quando exportando. Mesmo se o valor exportado mudou, os valores importados não irão mudar. Portanto, se os valores devem ser atualizados, outro importe precisa acontecer. Contudo, o último usa ligações em tempo real, os valores importados são importados no mesmo endereço de memória, então o valor importado muda junto com os importados.
699
699
- Em execução o último é compilado para `require/exports`.
700
700
@@ -1295,7 +1295,7 @@ Você pode ter dúvidas sobre o código acima, aqui nós explicamos o príncipio
1295
1295
1296
1296
# Proxy
1297
1297
1298
-
Proxi é uma nova funcionalidade desde o ES6. Ele costuma ser usado para definir operações em objetos:
1298
+
Proxy é uma nova funcionalidade desde o ES6. Ele costuma ser usado para definir operações em objetos:
0 commit comments