Skip to content

Commit 880a2e4

Browse files
authored
Merge pull request #219 from longo-andrea/review/primitive-methods
reviewed article and exercises
2 parents 69c3829 + 9ad53b6 commit 880a2e4

File tree

3 files changed

+19
-18
lines changed

3 files changed

+19
-18
lines changed

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ In questo caso, quando proviamo ad accedere a `user.address.street`, e l'utente
1818
```js run
1919
let user = {}; // un utente senza la proprietà "address"
2020

21+
2122
alert(user.address.street); // Errore!
2223
```
2324

1-js/05-data-types/01-primitives-methods/1-string-new-property/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ str.test = 5; // (*)
99
alert(str.test);
1010
```
1111

12-
Potrebbero esserci due diversi risultati:
12+
Potremmo ottenere due diversi risultati:
1313
1. `undefined`
1414
2. Un errore (strict mode).
1515

16-
Perché? Proviamo ad esaminare cosa succede nella linea `(*)`:
16+
Perché? Proviamo ad esaminare cosa succede alla riga `(*)`:
1717

1818
1. Quando si prova ad accedere ad una proprietà di `str`, viene creato un "oggetto contenitore".
1919
2. L'operazione di accesso viene eseguito su questo. Quindi l'oggetto ottiene la proprietà `test`.

1-js/05-data-types/01-primitives-methods/article.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
JavaScript ci consente di trattare i tipi primitivi (stringhe, numeri, etc.) come se fossero oggetti.
44

5-
Possiedono dei metodi per fare ciò. Molto presto li studieremo, prima dobbiamo vedere come funzionano, perché ovviamente i tipi primitivi non sono oggetti (cercheremo quindi di fare chiarezza).
5+
Mette a disposizione diversi metodi per farlo, che molto presto studieremo, prima però dobbiamo capire come funzionano, perché ovviamente i tipi primitivi non sono oggetti (cercheremo quindi di fare chiarezza).
66

77
Vediamo quali sono i punti chiave che distinguono i tipi primitivi dagli oggetti.
88

99
Un primitivo
1010

1111
- E' un valore di tipo primitivo.
12-
- Ci sono 6 tipi primitivi: `string`, `number`, `bigint`, `boolean`, `symbol`, `null` e `undefined`.
12+
- Esistono 6 tipi primitivi: `string`, `number`, `bigint`, `boolean`, `symbol`, `null` e `undefined`.
1313

1414
Un oggetto
1515

1616
- E' in grado di memorizzare molti valori come proprietà.
1717
- Può essere creato con `{}`, ad esempio: `{name: "John", age: 30}`. Ci sono altri tipi di oggetto in JavaScript; le funzioni ad esempio sono oggetti.
1818

19-
Uno dei migliori vantaggi degli oggetti è che possiamo memorizzarci funzioni come proprietà dello stesso.
19+
Uno dei principali vantaggi degli oggetti, è che questi possono essere utilizzati per memorizzare funzioni come loro proprietà.
2020

2121
```js run
2222
let john = {
@@ -31,7 +31,7 @@ john.sayHi(); // Hi buddy!
3131

3232
In questo esempio abbiamo creato un oggetto `john` con il metodo `sayHi`.
3333

34-
Esistono molti oggetti integrati, come quelli per manipolare le date, errori, elementi HTML, etc. Che possiedono diverse proprietà e metodi.
34+
Esistono diversi oggetti built-in (integrati nel linguaggio), come quelli dedicati alla manipolazione delle date, degli errori, degli elementi HTML, etc. I quali possiedono diverse proprietà e metodi.
3535

3636
Ma tutte queste caratteristiche hanno un costo!
3737

@@ -41,14 +41,14 @@ Gli oggetti sono più "pesanti" dei tipi primitivi. Richiedono risorse extra per
4141

4242
Questo è il paradosso contro cui si è scontato il creatore di JavaScript:
4343

44-
- Ci sono molte operazioni che uno vorrebbe fare con i tipi primitivi (come una stringa o un numero). Sarebbe molto bello poterli utilizzare con dei metodi.
44+
- Esitono molte operazioni che uno sviluppatore vorrebbe poter fare con i diversi tipi primitivi, come una stringa o un numero. Sarebbe molto bello poter utilizzare questi tipi di dato con dei metodi.
4545
- I tipi primitivi devono essere veloci e il più leggeri possibile.
4646

4747
La soluzione sembra un po' strana:
4848

49-
1. Le primitive rimangono primitive. Contengono un singolo valore.
49+
1. I primitivi rimangono primitivi. Contengono un singolo valore.
5050
2. Il linguaggio consente di accedere alle proprietà e ai metodi di stringhe, numeri, booleani e symbol.
51-
3. Quando questo accade, viene creato uno speciale "oggetto contenitore" che fornisce le funzionalità extra, successivamente verrà distrutto.
51+
3. Quando questo accade, viene creato uno speciale "oggetto contenitore" che fornisce le funzionalità extra, successivamente questo verrà distrutto.
5252

5353
Gli "oggetti contenitore" sono diversi per ogni primitiva e sono chiamati: `String`, `Number`, `Boolean` e `Symbol`. Questi forniscono diversi insiemi di metodi.
5454

@@ -68,11 +68,11 @@ Semplice, vero? Questo è quello che accade realmente in `str.toUpperCase()`:
6868
2. Questo metodo viene eseguito e ritorna una nuova stringa (mostrata da `alert`).
6969
3. L'oggetto speciale viene distrutto, lasciando solamente la primitiva `str`.
7070

71-
In questo modo le primitive possono fornire i vantaggi portati dai metodi, rimanendo allo stesso tempo molto leggere.
71+
In questo modo i primitivi possono sfruttare i vantaggi forniti dall'utilizzo dei metodi, rimanendo allo stesso tempo molto leggeri.
7272

73-
JavaScript cerca di ottimizzare il più possibile questo processo. In alcuni casi riesce ad evitare la creazione di oggetti inutili. Deve comunque aderire e comportarsi come definito dallo standard, quindi deve comportarsi come se ne fosse stato creato uno.
73+
JavaScript cerca di ottimizzare il più possibile questo processo. In alcuni casi riesce ad evitare la creazione di oggetti inutili. Nonostance ciò, deve comunque aderire alle specifiche, quindi il comportamento deve essere simile a quello che si avrebbe con la creazione di un oggetto.
7474

75-
Un numero ha dei propri metodi, ad esempio [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) che arrotonda il numero alla precisioni richiesta:
75+
Un variabile di tipo number ha dei propri metodi, ad esempio [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) che arrotonda il numero alla precisione richiesta:
7676

7777
```js run
7878
let n = 1.23456;
@@ -96,7 +96,7 @@ alert( typeof 0 ); // "number"
9696
alert( typeof new Number(0) ); // "object"!
9797
```
9898

99-
Gli oggetti valutati da un `if` sono sempre true, quindi l'alert verrà mostrato:
99+
Gli oggetti valutati da un `if` sono sempre true, quindi il seguente alert verrà mostrato sempre:
100100

101101
```js run
102102
let zero = new Number(0);
@@ -106,25 +106,25 @@ if (zero) { // zero è true, perché è un oggetto
106106
}
107107
```
108108

109-
In altre parole, utilizzare le stesse funzioni con `String/Number/Boolean` senza `new` è completamente sicuro. Poiché le variabili primitive verranno convertite all'oggetto corrispondente: ad una stringa, ad un numero, o ad un bool (primitive).
109+
In altre parole, utilizzare le stesse funzioni con `String/Number/Boolean` senza `new` è completamente sicuro. Poiché le variabili primitive verranno convertite all'oggetto corrispondente: ad una stringa, ad un numero, o ad un bool.
110110

111-
Ad esempio, è corretto fare:
111+
Ad esempio, il seguente codice è corretto:
112112
```js
113113
let num = Number("123"); // converte una string in number
114114
```
115115
````
116116
117117
118118
````warn header="null/undefined non hanno metodi"
119-
Le primitive speciali `null` e `undefined` sono delle eccezioni. Non possiedono degli speciali "oggetti contenitori", quindi non forniscono metodi. In questo senso, sono "molto primitive".
119+
I primitivi speciali `null` e `undefined` sono delle eccezioni. Non possiedono degli speciali "oggetti contenitori", quindi non forniscono metodi. In questo senso, sono "molto primitivi".
120120
121-
Un tentativo di accedere ad una proprietà con questi tipi di valore, lancerà un errore:
121+
Un tentativo di accedere ad una proprietà con questi tipi di valore, ritornerà un errore:
122122
123123
```js run
124124
alert(null.test); // errore
125125
````
126126

127127
## Riepilogo
128128

129-
- Le primitive, ad eccezioni di `null` e `undefined` forniscono molti metodi utili. Li studieremo nei prossimi capitoli.
129+
- I primitivi, ad eccezione di `null` e `undefined` forniscono molti metodi utili. Li studieremo nei prossimi capitoli.
130130
- Formalmente, questi metodi lavorano su oggetti temporanei, JavaScript però è ottimizzato per sfruttare al meglio le risorse, non risultano quindi molto "costosi".

0 commit comments

Comments
 (0)