模块模式:var module = new function(){...} vs var module =(function(){...}());

时间:2016-09-29 11:57:03

标签: javascript design-patterns module

标题是我将在下面给出的实际比较的简写。 我正在深入研究JavaScript并了解模块模式(JavaScript Module Pattern: In-DepthMastering 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

0 个答案:

没有答案