JavaScript类继承及实例化的方法

 更新时间:2015年07月25日 15:48:18   作者:狂飙的小蜗牛  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • cypress e2e测试编写注意点总结分析

    cypress e2e测试编写注意点总结分析

    这篇文章主要为大家介绍了cypress e2e测试编写注意点总结分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Express结合Webpack的全栈自动刷新

    Express结合Webpack的全栈自动刷新

    现在,webpack可以说是最流行的模块加载器一方面,它为前端静态资源的组织和管理提供了相对较完善的解决方案,另一方面,它也很大程度上改变了前端开发的工作流程。下面小编来和大家一起学习
    2019-05-05
  • selenium+java中用js来完成日期的修改

    selenium+java中用js来完成日期的修改

    这篇文章主要介绍了selenium+java中用js来完成日期的修改,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 如何使用TS对axios的进行简单封装

    如何使用TS对axios的进行简单封装

    在vue项目中和后台交互获取数据这块,我们通常使用的是axios库,这篇文章主要给大家介绍了关于如何使用TS对axios的进行简单封装的相关资料,需要的朋友可以参考下
    2022-10-10
  • 浅谈js中startsWith 函数不能在任何浏览器兼容的问题

    浅谈js中startsWith 函数不能在任何浏览器兼容的问题

    下面小编就为大家带来一篇浅谈js中startsWith 函数不能在任何浏览器兼容的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 详解JavaScript的另类写法

    详解JavaScript的另类写法

    这篇文章主要介绍了详解JavaScript的另类写法的相关资料,需要的朋友可以参考下
    2016-04-04
  • JavaScript实现五种不同烟花特效

    JavaScript实现五种不同烟花特效

    这篇文章主要给大家带来五个好看的基于 HTML+CSS+JS 的烟花特效,文中的示例代码讲解详细,对我们学习JavaScript有一定的帮助,需要的可以参考一下
    2022-01-01
  • 微信小程序的宿主环境实现代码

    微信小程序的宿主环境实现代码

    这篇文章主要介绍了微信小程序的宿主环境,包括scroll-view 组件的基本使用,text 组件的基本使用及rich-text 组件的基本使用,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • 火狐和ie下获取javascript 获取event的方法(推荐)

    火狐和ie下获取javascript 获取event的方法(推荐)

    下面小编就为大家带来一篇火狐和ie下获取javascript 获取event的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • JavaScript中setter和getter方法介绍

    JavaScript中setter和getter方法介绍

    这篇文章主要介绍了JavaScript中setter和getter方法介绍的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07

最新评论