私はJavaScriptをかなりよく理解し始めていると思っていましたが、はっきりとは分かりませんでした。私の問題点の例を説明しましょう。まず私は、次のモジュールが定義されている:(それが公開されているとして) モジュールの複数のインスタンスを作成する
var test1 = new Test();
var test2 = new Test();
は、今私は、カウンタ変数を更新し、いくつかの警告を行います。私は、2つのインスタンスを作成
var Test = function() {
var counter = 0;
function init() {
alert(counter);
}
return {
counter: counter,
init: init
}
};
。ここまでは順調ですね。
alert(test1.counter); // Alerts 0
test1.counter = 5;
alert(test2.counter); // Alerts 0
test2.counter = 10;
alert(test1.counter); // Alerts 5
は今、最終的に私は次のように言う:
test1.init(); // Alerts 0
test2.init(); // Alerts 0
これは私が理解していないビットです。なぜこの警告は0ですか?私は最初の警告が5と2番目の10であると思った。
誰かが上記の仕組みを説明して正しい方向に向ける方法があれば、私は感謝します。おかげ
スカラ変数が参照ではなく値によって渡される入力されました。だから 'return {counter:counter、...}'は現在の 'var counter 'の値をコピーし、' this.counter'を変更するだけで 'var counter'には影響しません。 –