这篇文章主要介绍了JavaScript类继承及实例化的方法,较为详细的分析了javascript扩展类、实例化类及类对象与成员函数的使用技巧,需要的朋友可以参考下
本文实例讲述了JavaScript类继承及实例化的方法。分享给大家供大家参考。具体如下:
- (function(){
- var Class = {
- //扩展类
- create: function(aBaseClass, aClassDefine){
- var $class = function(){
- for(var member in aClassDefine){
- this[member] = aClassDefine[member];
- }
- if('undefined'===typeof aClassDefine.initialize){
- this.initialize = function(){};
- }
- };
- if('function' ===typeof aBaseClass){
- $class.prototype = new aBaseClass();
- }else if('object' ===typeof aBaseClass){
- $class.prototype = aBaseClass;
- }
- return $class;
- },
- //实例化类
- new: function(jclass,args){
- var jclass = new jclass();
- if(jclass.initialize){
- jclass.initialize.apply(jclass, args);
- }
- return jclass;
- }
- };
- //export
- window.Class = Class;
- })();
示例:
- //基类对象或函数
- var obj = {
- name: 'BaseName',
- init: function(){
- //...
- },
- //...
- };
- var fun = function(){
- this.name = '';
- var init = function(){
- //.. .
- };
- var getName = function(){
- return this.name;
- },
- var setName = function(name){
- this.name = name;
- return this;//链式操作支持
- },
- //...
- };
- //从Object继承
- var class_frome_obj = Class.create(obj,{
- initialize: function(){
- //构造函数
- },
- getName: function(){
- return this.name;
- },
- setName: function(name){
- this.name = name;
- return this;//链式操作支持
- },
- //...
- });
- //从Function继承
- var class_frome_fun = Class.create(fun,{
- initialize: function(){
- //构造函数
- },
- //...
- });
- //从空对生成基类
- var class_frome_base = Class.create({},{
- initialize: function(){
- //构造函数
- },
- //...
- });
- //实例化
- var get_class_frome_obj = Class.new(class_frome_obj,[arg1,arg2,...]);
- var get_class_frome_fun = Class.new(class_frome_fun,[arg1,arg2,...]);
- var name1 = get_class_frome_obj.getName();
- //console.log(name1);//BaseName
- var name2 = get_class_frome_obj.setName('NewName').getName();
- //console.log(name2);//NewName
希望本文所述对大家的javascript程序设计有所帮助。
新闻热点
疑难解答
图片精选