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程序设计有所帮助。