Fer*_*gal 10 javascript constructor module-pattern
从单个实例和多实例的角度来看,为什么我会在模块模式之后编写所有那些额外的代码行,而只是使用带有在构造函数体中定义的方法和属性的标准构造函数?
模块模式示例: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)
Run Code Online (Sandbox Code Playgroud)
构造函数示例: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);
Run Code Online (Sandbox Code Playgroud)
对我来说,最终的结果几乎是一样的.两者都可以具有公共属性和方法,两者都可以具有"私有"变量和可以由公共方法访问的方法.
两者都将为单例定义一次公共/原型方法,两者都将为对象的多个实例/克隆定义多次.
我错过了什么吗?有什么不同?
Dam*_*amp 16
在第一个示例中,foo将是所有module()实例共有的静态变量.意思是,所有实例都将引用相同的变量.
在第二个示例中,每个Module()实例的foo都不同.
除此之外,我认为没有任何区别.
| 归档时间: |
|
| 查看次数: |
10145 次 |
| 最近记录: |