JS仿Base.js实现的继承示例
本文实例讲述了JS仿Base.js实现的继承。分享给大家供大家参考,具体如下:
varKlass=function(){}; Klass.extendClass=(function(){ varF=function(){}; returnfunction(C,P){ F.prototype=P.prototype; C.prototype=newF(); C.uper=P.prototype; C.prototype.constructor=C; }; })(); Klass.extend=function(props){ var_slice=Array.prototype.slice; varGlass=function(){ /*if(Glass.uper&&Glass.uper.hasOwnProperty("init")){ Glass.uper.init.apply(this,_slice.call(arguments)) }*/ if(Glass.prototype.hasOwnProperty("init")){ Glass.prototype.init.apply(this,_slice.call(arguments)); } }; Klass.extendClass(Glass,this); Glass.extend=this.extend; for(varkeyinprops){ if(props.hasOwnProperty(key)){ Glass.prototype[key]=props[key]; } } returnGlass; };
example:
varA=Klass.extend({ init:function(name){ this.name=name; console.log('Aconstructorisrunning!'); }, getName:function(){ returnthis.name; } }); varB=A.extend({ init:function(name){ this.name=name; console.log('Bconstructorisrunning!'); }, getName:function(){ returnthis.name; }, a:'b' }); varC=B.extend({ init:function(name){ console.log('Cconstructorisrunning!'); }, c:'c', getName:function(){ varname=C.uper.getName.call(this); return'Hi,I\'m'+this.name; } }); varc1=newC('zlf'); console.log(c1.getName());
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。