从单实例和多实例的角度来看,我为什么要按照模块模式编写所有这些额外的代码行,而不是仅使用标准构造函数以及在构造函数主体中定义的方法和属性?
模块模式示例:http: //jsfiddle.net/T3ZJE/1/
var module = (function () {
// private variables and functions
var foo = 'bar';
// constructor
var module = function () {
};
// prototype
module.prototype = {
constructor: module,
something: function () {
}
};
// return module
return module;
})();
var my_module = new module();
console.log(my_module)
构造函数示例:http: //jsfiddle.net/EuvaS/2/
function Module(){
// private variables and functions
var foo = 'bar';
//public methods
this.something = function () {
}
}
var my_module = new Module();
console.log(my_module);
对我来说,最终的结果几乎是一样的。两者都可以具有公共属性和方法,都可以具有可以被公共方法访问的“私有”变量和方法。
两者都将为单例定义一次公共/原型方法,都将为对象的多个实例/克隆定义多次。
我错过了什么吗?有什么不同?