JavaScript类继承及实例化的方法


Posted in Javascript onJuly 25, 2015

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
js获取本机的外网/广域网ip地址完整源码
Aug 12 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
Oct 27 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
微信小程序学习笔记之本地数据缓存功能详解
Mar 29 Javascript
微信小程序实现授权登录
May 15 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
es6数组includes()用法实例分析
Apr 18 Javascript
JavaScript继承的三种方法实例
May 12 Javascript
避坑之 JavaScript 中的toFixed()和正则表达式
Apr 19 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 #Javascript
javascript去掉代码里面的注释
Jul 24 #Javascript
Jquery简单分页实现方法
Jul 24 #Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 #Javascript
Css3制作变形与动画效果
Jul 24 #Javascript
四种参数传递的形式——URL,超链接,js,form表单
Jul 24 #Javascript
基于JS实现的倒计时程序实例
Jul 24 #Javascript
You might like
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
2020/03/17 Javascript
Python SQLite3数据库操作类分享
2014/06/10 Python
python 读入多行数据的实例
2018/04/19 Python
python计算两个数的百分比方法
2018/06/29 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
Python @property原理解析和用法实例
2020/02/11 Python
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
初中化学教学反思
2014/01/23 职场文书
药剂专业自荐书
2014/06/20 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
批评与自我批评总结
2014/10/17 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书