我试图让我的头脑了解 javascript 中的揭示模块模式。我对以下代码片段的两件事感到困惑。
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);
});
这里写入控制台的三个值是 100、150、100。这告诉我,当我用一个值调用“addPoints”时,totalPoints 变量没有更新。如果我检查addPoints 函数中的 totalPoints 的值,它已正确递增。这是怎么回事?
如果我使用控制台检查 window.addPoints 或 window.getPoints 我可以看到,因为我没有在函数声明前面使用“var”,它们已被添加到全局范围。那不是错了吗?我正在查看的大多数示例似乎都是这样做的。
任何指点都感激不尽。