Ho pensato che stavo iniziando a capire JavaScript piuttosto bene, ma chiaramente no. Lasciatemi spiegare il mio problema con un esempio. In primo luogo ho il seguente modulo definito:Creazione di più istanze di un modulo
var Test = function() {
var counter = 0;
function init() {
alert(counter);
}
return {
counter: counter,
init: init
}
};
Ho quindi creare 2 casi:
var test1 = new Test();
var test2 = new Test();
Ora aggiornare la variabile del contatore (come è pubblico) e fare alcuni avvisi. Fin qui tutto bene.
alert(test1.counter); // Alerts 0
test1.counter = 5;
alert(test2.counter); // Alerts 0
test2.counter = 10;
alert(test1.counter); // Alerts 5
Ora finalmente ho dire quanto segue:
test1.init(); // Alerts 0
test2.init(); // Alerts 0
Questo è il bit che non capisco. Perché questo avviso 0? Ho pensato che il primo avviso sarebbe stato 5 e il secondo 10.
Apprezzerei se qualcuno potesse spiegare come potrebbe funzionare quanto sopra o indicarmi la giusta direzione. Grazie
scalare diversi tipi di variabili sono passati per valore piuttosto che per riferimento. Quindi 'return {counter: counter, ...}' copia solo il valore corrente 'var counter' e cambiando' this.counter'does non ha effetto su 'var counter'. –