Skip to content

Commit 55dad76

Browse files
author
Marco Trulla
committed
Fix typos and update translation
1 parent a582d14 commit 55dad76

File tree

8 files changed

+120
-93
lines changed

8 files changed

+120
-93
lines changed

doc/it/array/general.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,13 @@ Mentre il *getter* della proprietà `length` ritorna semplicemente il numero di
4242
elementi che sono contenuti nell'array, il *setter* può essere usato per
4343
**troncare** l'array.
4444

45-
var foo = [1, 2, 3, 4, 5, 6];
46-
foo.length = 3;
47-
foo; // [1, 2, 3]
45+
var arr = [1, 2, 3, 4, 5, 6];
46+
arr.length = 3;
47+
arr; // [1, 2, 3]
4848

49-
foo.length = 6;
50-
foo.push(4);
51-
foo; // [1, 2, 3, undefined, undefined, undefined, 4]
49+
arr.length = 6;
50+
arr.push(4);
51+
arr; // [1, 2, 3, undefined, undefined, undefined, 4]
5252

5353
Assegnando una lunghezza più piccola si tronca l'array. Incrementandola si
5454
crea un array frammentato.
@@ -59,4 +59,3 @@ Per la miglior performance, si raccomanda di usare sempre il ciclo `for`
5959
classico e fare il caching della proprietà `length`. L'uso di `for in` su di
6060
un array è segno di un codice scritto male che è suscettibile a bug e pessima
6161
performance.
62-

doc/it/core/eval.md

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,27 @@
22

33
La funzione `eval` eseguirà una stringa di codice JavaScript nello scope locale.
44

5-
var foo = 1;
5+
var number = 1;
66
function test() {
7-
var foo = 2;
8-
eval('foo = 3');
9-
return foo;
7+
var number = 2;
8+
eval('number = 3');
9+
return number;
1010
}
1111
test(); // 3
12-
foo; // 1
12+
number; // 1
1313

1414
Comunque, `eval` esegue solo nello scope locale quando viene chiamata
1515
direttamente *e* quando il nome della funzione chiamata è `eval`.
1616

17-
var foo = 1;
17+
var number = 1;
1818
function test() {
19-
var foo = 2;
20-
var bar = eval;
21-
bar('foo = 3');
22-
return foo;
19+
var number = 2;
20+
var copyOfEval = eval;
21+
copyOfEval('number = 3');
22+
return number;
2323
}
2424
test(); // 2
25-
foo; // 3
25+
number; // 3
2626

2727
L'uso di `eval` dovrebbe essere evitato. Il 99.9% dei suoi "utilizzi" può
2828
essere ottenuto **senza** di essa.
@@ -47,4 +47,3 @@ essere messo in discussione sotto l'aspetto della funzionalità, della performan
4747
e della sicurezza. Se qualcosa richiede `eval` per poter funzionare, allora **non**
4848
dovrebbe essere usato in primo luogo, ma si dovrebbe prevedere una
4949
*miglior progettazione* che non richieda l'uso di `eval`.
50-

doc/it/function/constructors.md

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -12,44 +12,44 @@ come costruttore.
1212
Se la funzione che è stata chiamata non ha un'istruzione `return` esplicita,
1313
allora essa ritorna implicitamente il valore di `this` (il nuovo oggetto).
1414

15-
function Foo() {
16-
this.bla = 1;
15+
function Person(name) {
16+
this.name = name;
1717
}
1818

19-
Foo.prototype.test = function() {
20-
console.log(this.bla);
19+
Person.prototype.logName = function() {
20+
console.log(this.name);
2121
};
2222

23-
var test = new Foo();
23+
var sean = new Person();
2424

25-
Questo esempio chiama `Foo` come costruttore ed imposta il `prototype` del
26-
nuovo oggetto creato a `Foo.prototype`.
25+
Questo esempio chiama `Person` come costruttore ed imposta il `prototype` del
26+
nuovo oggetto creato a `Person.prototype`.
2727

2828
In caso di istruzione `return` esplicita, la funzione ritorna il valore
2929
specificato da quell'istruzione, ma **solo** se il valore di ritorno è un
3030
`Object`.
3131

32-
function Bar() {
33-
return 2;
32+
function Car() {
33+
return 'ford';
3434
}
35-
new Bar(); // un nuovo oggetto
35+
new Car(); // un nuovo oggetto, non 'ford'
3636

37-
function Test() {
38-
this.value = 2;
37+
function Person() {
38+
this.someValue = 2;
3939

4040
return {
41-
foo: 1
41+
name: 'Charles'
4242
};
4343
}
44-
new Test(); // l'oggetto ritornato
44+
new Test(); // l'oggetto ritornato ({name: 'Charles'}), escluso someValue
4545

4646
Quando la parola chiave `new` viene omessa, la funzione **non** ritornerà un
4747
nuovo oggetto.
4848

49-
function Foo() {
50-
this.bla = 1; // imposta la proprietà dell'oggetto globale
49+
function Pirate() {
50+
this.hasEyePatch = true; // imposta la proprietà nell'oggetto globale!
5151
}
52-
Foo(); // undefined
52+
var somePirate = Pirate(); // somePirate è undefined
5353

5454
Mentre l'esempio precedente potrebbe sembrare essere funzionante in alcuni
5555
casi, a causa del modo in cui lavora [`this`](#function.this) in JavaScript,
@@ -60,27 +60,27 @@ esso userà l'*oggetto globale* come valore di `this`.
6060
Per poter omettere la parola chiave `new`, la funzione costruttore deve
6161
esplicitamente ritornare un valore.
6262

63-
function Bar() {
64-
var value = 1;
63+
function Robot() {
64+
var color = 'gray';
6565
return {
66-
method: function() {
67-
return value;
66+
getColor: function() {
67+
return color;
6868
}
6969
}
7070
}
71-
Bar.prototype = {
72-
foo: function() {}
71+
Robot.prototype = {
72+
someFunction: function() {}
7373
};
7474

75-
new Bar();
76-
Bar();
75+
new Robot();
76+
Robot();
7777

78-
Entrambe le chiamate a `Bar` ritornano lo stesso risultato, un nuovo oggetto
78+
Entrambe le chiamate a `Robot` ritornano lo stesso risultato, un nuovo oggetto
7979
creato con una proprietà chiamata `method`, che è una [Closure](#function.closures).
8080

81-
Bisogna anche notare che la chiamata `new Bar()` **non** influisce sul prototipo
81+
Bisogna anche notare che la chiamata `new Robot()` **non** influisce sul prototipo
8282
dell'oggetto ritornato. Mentre il prototipo sarà impostato con il nuovo oggetto
83-
creato, `Bar` non ritornerà mai quel nuovo oggetto.
83+
creato, `Robot` non ritornerà mai quel nuovo oggetto.
8484

8585
Nell'esempio sopra, non c'è differenza funzionale nell'usare o meno la parola
8686
chiave `new`.
@@ -93,19 +93,20 @@ può portare a bug potenzialmente insidiosi da risolvere.
9393
Per poter creare un nuovo oggetto, si dovrebbe invece usare una factory e
9494
costruire un nuovo oggetto all'interno di quella factory.
9595

96-
function Foo() {
97-
var obj = {};
98-
obj.value = 'blub';
96+
function CarFactory() {
97+
var car = {};
98+
car.owner = 'nobody';
9999

100-
var private = 2;
101-
obj.someMethod = function(value) {
102-
this.value = value;
100+
var milesPerGallon = 2;
101+
102+
car.setOwner = function(newOwner) {
103+
this.owner = newOwner;
103104
}
104105

105-
obj.getPrivate = function() {
106-
return private;
106+
car.getMPG = function() {
107+
return milesPerGallon;
107108
}
108-
return obj;
109+
return car;
109110
}
110111

111112
Sebbene questo esempio sia a prova di omissione della parola chiave `new` e
@@ -126,4 +127,3 @@ bug, **non** è certo un motivo per privarsi completamente dell'uso dei prototip
126127
Alla fine si tratta di decidere quale sia la soluzione più adatta per
127128
l'applicazione. È specialmente importante scegliere uno specifico stile
128129
di creazione degli oggetti ed usarlo in maniera **consistente**.
129-

doc/it/function/this.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,21 +71,31 @@ uso pratico.
7171
Una comune credenza è che `this` all'interno di `test` faccia riferimento a
7272
`Foo` mentre, invece, **non** è così.
7373

74-
Per poter ottenere l'accesso a `Foo` dall'interno di `test`, è necessario creare
74+
Per poter ottenere l'accesso a `Foo` dall'interno di `test`, si può creare
7575
una variabile locale all'interno di `method` che faccia riferimento a `Foo`.
7676

7777
Foo.method = function() {
78-
var that = this;
78+
var self = this;
7979
function test() {
80-
// Qui viene usato that invece di this
80+
// Qui viene usato self invece di this
8181
}
8282
test();
8383
}
8484

85-
`that` è solo un normale nome di variabile, ma viene comunemente usato come
85+
`self` è solo un normale nome di variabile, ma viene comunemente usato come
8686
riferimento ad un `this` più esterno. Abbinato alle [closures](#function.closures)
8787
può anche essere usato per passare il valore di `this`.
8888

89+
Con l'introduzione di ECMAScript 5 è possibile usare il metodo `bind` combinato
90+
con una funziona anonima
91+
92+
Foo.method = function() {
93+
var test = function() {
94+
// this ora fa riferimento a Foo
95+
}.bind(this);
96+
test();
97+
}
98+
8999
### Metodi di asseganzione
90100

91101
Un'altra cosa che **non** funziona in JavaScript è la creazione di un alias ad
@@ -112,4 +122,3 @@ l'[ereditarietà prototipale](#object.prototype).
112122

113123
Quando `method` viene chiamato da un'istanza di `Bar`, `this` farà riferimento
114124
a quell'istanza.
115-

doc/it/object/forinloop.md

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,19 @@ prototipi quando itera tra le proprietà di un oggetto.
1717

1818
Dato che non è possibile modificare il comportamento del ciclo `for in`,
1919
è necessario filtrare le proprietà indesiderate all'interno del ciclo stesso.
20-
Questo può essere fatto usando il metodo [`hasOwnProperty`](#object.hasownproperty)
21-
di `Object.prototype`.
20+
In ECMAScript 3 o precedente, questo può essere fatto usando il metodo
21+
[`hasOwnProperty`](#object.hasownproperty) di `Object.prototype`.
22+
23+
A partire da ECMAScript 5, `Object.defineProperty` può essere utilizzato con
24+
`enumerbale` impostato a `false` per aggiungere proprietà agli oggetti (incluso
25+
`Object`) senza che queste proprietà vengano enumerate. In questo caso è
26+
ragionevole assumere che, nel codice di un'applicazione, ogni proprietà
27+
enumerabile sia stata aggiunta per un motivo, ed quindi omettere `hasOwnProperty`
28+
in quanto rende il codice più prolisso e meno leggibile. Nel codice delle
29+
librerie `hasOwnProperty` dovrebbe essere ancora utilizzato, dato che non è
30+
possibile presumere quali proprietà enumerabili siano presenti nella catena dei
31+
prototipi.
32+
2233

2334
> **Nota:** dato che `for in` attraversa sempre tutta la catena di prototipi,
2435
> esso rallenterà per ogni strato aggiuntivo di ereditarietà aggiunto ad un
@@ -33,20 +44,25 @@ di `Object.prototype`.
3344
}
3445
}
3546

36-
Questa è la sola versione corretta da usare. Proprio a causa dell'utilizzo di
37-
`hasOwnProperty`, **soltanto** `moo` verrà stampato; mentre omettendone l'uso,
38-
il codice sarà soggetto ad errori nei casi dove i prototipi nativi (ad esempio
39-
`Object.prototype`) sono stati estesi.
47+
Questa è la sola versione corretta da usare con le vecchie versioni di ECMAScript.
48+
Proprio a causa dell'utilizzo di `hasOwnProperty`, **soltanto** `moo` verrà
49+
stampato; mentre omettendone l'uso, il codice sarà soggetto ad errori nei casi
50+
dove i prototipi nativi (ad esempio `Object.prototype`) sono stati estesi.
4051

41-
Un framework ampiamente usato che estende `Object.prototype` è [Prototype][1].
52+
Nelle nuove versioni di ECMAScript, le proprietà non enumerabili possono essere
53+
definite con `Object.defineProperty`, riducendo il rischio di iterare sulle
54+
proprietà non usando `hasOwnProperty`. È altresì importante stare attenti
55+
quando si usano librerie come [Prototype][1], che ancora non sfruttano le nuove
56+
funzionalità di ECMAScript.
4257
Quando questo framework viene incluso, è sicuro che i cicli `for in` che non
4358
utilizzano `hasOwnProperty` non funzioneranno.
4459

4560
### In conclusione
4661

47-
Si raccomanda di usare **sempre** `hasOwnProperty`. Non si dovrebbe mai dare
48-
per scontato l'ambiente in cui il codice sta girando, o se i prototipi
49-
nativi sono stati estesi o meno.
62+
Si raccomanda di usare **sempre** `hasOwnProperty` in ECMAScript 3 o precedenti,
63+
e nel codice delle librerie. Non si dovrebbe mai dare per scontato nell'ambiente
64+
in cui il codice sta girando, se i prototipi nativi sono stati estesi o meno. A
65+
partire da ECMAScript 5 `Object.defineProperty` rende possibile definire proprietà
66+
non enumerabili ed omettere `hasOwnProperty` nel codice dell'applicazione.
5067

5168
[1]: http://www.prototypejs.org/
52-

doc/it/object/hasownproperty.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@ Per verificare se un oggetto ha (possiede) una proprietà definita dentro
2222
foo.hasOwnProperty('bar'); // false
2323
foo.hasOwnProperty('goo'); // true
2424

25-
Solo `hasOwnProperty` darà il risultato atteso e corretto. Questo è essenziale
26-
quando si itera tra le proprietà di un qualsiasi oggetto. **Non** c'è altro
27-
modo per escludere proprietà che non sono definite all'interno dell'oggetto
28-
stesso, ma da qualche altra parte nella sua catena di prototipi.
25+
Solo `hasOwnProperty` darà il risultato atteso e corretto. Guarda la sezione
26+
[cicli `for in`][#object.forinloop] per maggiori dettagli riguardo a quando
27+
usare `hasOwnProperty` per iterare le proprietà di un oggetto.
2928

3029
### `hasOwnProperty` come proprietà
3130

@@ -54,7 +53,6 @@ risultato corretto.
5453
### In conclusione
5554

5655
Usare `hasOwnProperty` è l'**unico** metodo affidabile per verificare
57-
l'esistenza di una proprietà in un oggetto. È raccomandabile usare
58-
`hasOwnProperty` in **ogni** [ciclo `for in`](#object.forinloop) per
59-
evitare errori con i [prototipi](#object.prototype) nativi estesi.
60-
56+
l'esistenza di una proprietà in un oggetto. È raccomandabile che
57+
`hasOwnProperty` venga usata in molti casi in cui è necessario iterare le
58+
proprietà di un oggetto, come descritto nella sezione [cicli `for in`](#object.forinloop).

doc/it/other/timeouts.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
Dato che JavaScript è asincrono, è possibile programmare l'esecuzione di una
44
funzione usando le funzioni `setTimeout` e `setInterval`.
55

6-
> **Nota:** i timeout **non** sono parte dello standard ECMAScript. Essi
7-
> vengono implementati come parte del [DOM][1].
6+
> **Nota:** i timeout **non** sono parte dello standard ECMAScript. Erano stati
7+
> implementati in [BOM, o DOM Level 0][1], i quali non sono mai stati definiti
8+
> o documentati formalmente. Nessuna specifica raccomandazione è mai stata
9+
> pubblicata, tuttavia, la loro standardizzazione è in via di ultimazione con
10+
> [HTML5][2]. Per loro stessa natura, quindi, l'implementazione può essere
11+
> differente nei vari browser e motori di rendering.
812
913
function foo() {}
1014
var id = setTimeout(foo, 1000); // ritorna un Number > 0
@@ -52,7 +56,7 @@ con intervalli molto brevi, tradursi in chiamate a funzione che si sovrappongono
5256
function foo(){
5357
// qualcosa che blocca per 1 secondo
5458
}
55-
setInterval(foo, 100);
59+
setInterval(foo, 1000);
5660

5761
Nel codice precedente, `foo` verrà chiamato una volta e quindi bloccherà per
5862
un secondo.
@@ -68,7 +72,7 @@ La soluzione più semplice, come anche la più controllabile, è quella di usare
6872

6973
function foo(){
7074
// qualcosa che blocca per 1 secondo
71-
setTimeout(foo, 100);
75+
setTimeout(foo, 1000);
7276
}
7377
foo();
7478

@@ -119,8 +123,7 @@ gli ID dei timeout, così che possano essere puliti in modo specifico.
119123
primo parametro. Questa caratteristica non dovrebbe essere **mai** usata
120124
perché internamente fa uso di `eval`.
121125

122-
> **Nota:** dato che le funzioni di timeout **non** sono specificate dallo
123-
> standard ECMAScript, l'esatto funzionamento quando viene passata una stringa
126+
> **Nota:** L'esatto funzionamento quando viene passata una stringa
124127
> potrebbe differire nelle varie implementazioni di JavaScript. Per esempio,
125128
> JScript di Microsoft usa il costruttore `Function` al posto di `eval`.
126129
@@ -157,6 +160,9 @@ funzione che verrà chiamata da una delle funzioni di timeout.
157160
> `setTimeout(foo, 1000, 1, 2, 3)`, non la si raccomanda, dato che il suo
158161
> utilizzo potrebbe portare ad errori subdoli quando usata con i
159162
> [metodi](#function.this).
163+
> Inoltre, la sintassi potrebbe non funzionare in alcune implementazioni di
164+
> JavaScript.
165+
> Ad esempio, Internet Explorer di Microsoft [**non** passa direttamente gli argomenti al callback](3).
160166
161167
### In conclusione
162168

@@ -169,5 +175,6 @@ di gestire l'effettiva chiamata.
169175
Inoltre, l'uso di `setInterval` dovrebbe essere evitato perché il suo schedulatore
170176
non viene bloccato dall'esecuzione di JavaScript.
171177

172-
[1]: http://en.wikipedia.org/wiki/Document_Object_Model "Document Object Model"
173-
178+
[1]: http://www.nczonline.net/blog/2009/09/29/web-definitions-dom-ajax-and-more/ "Web definitions: DOM, Ajax, and more"
179+
[2]: http://www.w3.org/TR/2014/WD-html5-20140617/webappapis.html#timers "6 Web application APIs - HTML5"
180+
[3]: http://msdn.microsoft.com/en-us/library/ie/ms536753(v=vs.85).aspx "setTimeout method (Internet Explorer)"

0 commit comments

Comments
 (0)