私は、javascript でモジュール パターンを明らかにすることに頭を悩ませようとしています。次のコード スニペットについて、2 つの点で困惑しています。
var Child = function () {
var totalPoints = 100;
addPoints = function (points) {
totalPoints += points;
return totalPoints;
};
getPoints = function () {
return totalPoints;
};
return {
points: totalPoints,
addPoints: addPoints
};
};
$(function () {
var george = Child();
console.log(george.points);
console.log(george.addPoints(50));
console.log(george.points);
});
ここでコンソールに書き込まれる 3 つの値は 100、150、100 です。値を指定して「addPoints」を呼び出すと、totalPoints 変数が更新されないことがわかります。addPoints 関数内の totalPointsの値を調べると、適切にインクリメントされています。どうしたの?
コンソールを使用してwindow.addPointsまたはwindow.getPointsを調べると、グローバルスコープに追加された関数宣言の前に「var」を使用していないため、それがわかります。それは間違っていませんか?私が見ている例のほとんどは、これを行っているようです。
感謝して受け取ったポインタ。