首页 > 代码库 > javascript设计模式5

javascript设计模式5

子类引用父类

function extend(subClass,superClass){    var F=function(){};    F.prototype=superClass.prototype;    subClass.prototype=new F();    subClass.prototype.constructor=subClass;    subClass.superClass=superClass.prototype;    if(subClass.prototype.constructor==Object.prototype.constructor){        superClass.prototype.constructor=superClass;    }}

原型式继承

var Person={    name:‘default name‘,    getName:function(){        return this.name;    }};

用工厂模式

var CompoundObject={};CompoundObject.string1=‘default value‘,CompoundObject.createChildObject=function(){    return{        bool:true,        num:10    }};CompoundObject.childObject=CompoundObject.createChildObject();var compoundObjectClone=clone(CompoundObject);compoundObjectClone.childObject=CompoundObject.createChildObject();compoundObjectClone.childObject.num=5;

例子中的clone函数

function clone(object){    function F(){}    F.prototype=object;    return new F;}

掺元类:通过扩充的方式共享函数

var Mixin=function(){};Mixin.prototype={    serialize:function(){        var output=[];        for(key in this){            output.push(key+‘:‘+this[key]);        }        return output.join(‘,‘);    }}
function augment(receivingClass,givingClass){    if(arguments[2]){        for(var i=2,len=arguments.length;i<len;i++){            receivingClass.prototype[arguments[i]]=givingClass.prototype[arguments[i]];        }    }    else{        for(methodName in givingClass.prototype){            if(!receivingClass.prototype[methodName]){                receivingClass.prototype[methodName]=givingClass.prototype[methodName];            }        }    }}

 

javascript设计模式5