首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。