JavaScript类继承及实例化的方法
本文实例讲述了JavaScript类继承及实例化的方法。分享给大家供大家参考。具体如下:
(function(){ varClass={ //扩展类 create:function(aBaseClass,aClassDefine){ var$class=function(){ for(varmemberinaClassDefine){ this[member]=aClassDefine[member]; } if('undefined'===typeofaClassDefine.initialize){ this.initialize=function(){}; } }; if('function'===typeofaBaseClass){ $class.prototype=newaBaseClass(); }elseif('object'===typeofaBaseClass){ $class.prototype=aBaseClass; } return$class; }, //实例化类 new:function(jclass,args){ varjclass=newjclass(); if(jclass.initialize){ jclass.initialize.apply(jclass,args); } returnjclass; } }; //export window.Class=Class; })();
示例:
//基类对象或函数 varobj={ name:'BaseName', init:function(){ //... }, //... }; varfun=function(){ this.name=''; varinit=function(){ //... }; vargetName=function(){ returnthis.name; }, varsetName=function(name){ this.name=name; returnthis;//链式操作支持 }, //... }; //从Object继承 varclass_frome_obj=Class.create(obj,{ initialize:function(){ //构造函数 }, getName:function(){ returnthis.name; }, setName:function(name){ this.name=name; returnthis;//链式操作支持 }, //... }); //从Function继承 varclass_frome_fun=Class.create(fun,{ initialize:function(){ //构造函数 }, //... }); //从空对生成基类 varclass_frome_base=Class.create({},{ initialize:function(){ //构造函数 }, //... }); //实例化 varget_class_frome_obj=Class.new(class_frome_obj,[arg1,arg2,...]); varget_class_frome_fun=Class.new(class_frome_fun,[arg1,arg2,...]); varname1=get_class_frome_obj.getName(); //console.log(name1);//BaseName varname2=get_class_frome_obj.setName('NewName').getName(); //console.log(name2);//NewName
希望本文所述对大家的javascript程序设计有所帮助。