使用JavaScript创建对象时要遵循哪种设计模式



模块模式(OR)原型模式

用例:我必须创建多个对象,但是基类无法获得任何派生类,我可以将模块模式与常见的全局函数一起使用,而不是原型。

例如:

代码1 :(模块模式)

var globals = {
   method1 : function(){
       console.log("global method"); 
   }
}
function closureModule(){
    obj = {};
    obj.commonMethod = globals.method1;
    function pvtMethod(){
        console.log("private");
    }
    obj.privateMethod = pvtMethod
    return obj;
}
var o1 = closureModule();
var o2 = closureModule();
.
.
.
.
var o100 = closureModule();

代码2 :(原型模式)

function base(key){
    this.KEY = key;
}
base.prototype.commonMethod = function(){
    console.log("common Method", this);
}
var o1 = new base("0");
var o2 = new base("1");
.
.
.
.
var o100 = new base("100");

模块模式对于通过隐藏内部实现详细信息来执行适当的封装最有用。

如果您只需要相同"类"的多个实例来共享公共功能,则使用prototype是正确的方法。

最新更新