标题是我将在下面给出的实际比较的简写。 我正在深入研究JavaScript并了解模块模式(JavaScript Module Pattern: In-Depth和Mastering the Module Pattern)
我自己的模块模式的实现与上面链接中描述的模式略有不同。
我的实施:
var smath1 = new function () {
// "private fields"
var answer = new Number(42);
// "public fields"
this.PI = new Number(3.141592653589793);
// "private functions"
function getHalfTheAnswer() {
return answer / 2;
};
// "public functions"
this.sum = function (a, b) { return new Number(a) + new Number(b) };
this.mul = function (a, b) { return new Number(a) * new Number(b) };
this.getTheAnswer = function () { return answer; };
this.calcTheAnswer = function () { return getHalfTheAnswer() * 2 };
}

我对这与链接中描述的模式有何不同(技术上/逻辑上)感兴趣...
var smath2 = (function () {
var my = {};
// "private fields"
var answer = new Number(42);
// "public fields"
my.PI = new Number(3.141592653589793);
// "private functions"
function getHalfTheAnswer() {
return answer / 2;
};
// "public functions"
my.sum = function (a, b) { return new Number(a) + new Number(b) };
my.mul = function (a, b) { return new Number(a) * new Number(b) };
my.getTheAnswer = function () { return answer; };
my.calcTheAnswer = function () { return getHalfTheAnswer() * 2 };
return my;
}());

......是什么让第二种方法优于第一种方法,如果是的话呢?
就我在测试中看到的情况而言,用法与行为完全相同。请参阅小提琴:JS Module Pattern